R:基于子字符串合并两个数据帧

芥末记录

我有两个数据框。df1一个看起来像:

           Day     Element    Incident
1   2020-04-06     3101       Check incident by SOILING
2   2020-04-02     3102       Check alarm 5662
3   2020-05-21     3101       Check energy loss by METEO ERROR
4   2020-04-02     3202       Check ACDC grid

另一个df2是这样的:

         Day     Element  Incident       Energy_loss
1 2020-04-06     3101     SOILING        0.05
2 2020-04-14     3101     SOILING        0.01
3 2020-05-21     3101     METEO ERROR    0.11
4 2020-06-15     3102     METEO ERROR    0.03

我想基于列合并它们DayElementIncident,所以我需要找到当列Incidentdf1包含列Incidentdf2df1与之不匹配的行df2可以NanEnergy loss列中保留a

我尝试了通常的合并,但是由于条件之一merge是通过子字符串进行,因此无法正常工作。

我期望的输出是:

           Day     Element    Incident                          Energy loss
1   2020-04-06     3101       Check incident by SOILING                0.05
2   2020-04-02     3102       Check alarm 5662                          Nan
3   2020-05-21     3101       Check energy loss by METEO ERROR         0.11
4   2020-04-02     3202       Check ACDC grid                           Nan
阿克伦

我们可以使用 regex_left_join

library(dplyr)
library(fuzzyjoin)
regex_left_join(df1, df2, by = c('Day', 'Element', 'Incident')) %>% 
    select(Day = Day.x, Element = Element.x, Incident = Incident.x, Energy_loss)

-输出

#       Day Element                         Incident Energy_loss
#1 2020-04-06    3101        Check incident by SOILING        0.05
#2 2020-04-02    3102                 Check alarm 5662          NA
#3 2020-05-21    3101 Check energy loss by METEO ERROR        0.11
#4 2020-04-02    3202                  Check ACDC grid          NA

数据

df1 <- structure(list(Day = c("2020-04-06", "2020-04-02", "2020-05-21", 
"2020-04-02"), Element = c(3101L, 3102L, 3101L, 3202L), 
Incident = c("Check incident by SOILING", 
"Check alarm 5662", "Check energy loss by METEO ERROR", "Check ACDC grid"
)), class = "data.frame", row.names = c("1", "2", "3", "4"))

df2 <- structure(list(Day = c("2020-04-06", "2020-04-14", "2020-05-21", 
"2020-06-15"), Element = c(3101L, 3101L, 3101L, 3102L), Incident = c("SOILING", 
"SOILING", "METEO ERROR", "METEO ERROR"), Energy_loss = c(0.05, 
0.01, 0.11, 0.03)), class = "data.frame", row.names = c("1", 
"2", "3", "4"))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将两个数据帧与具有某些字符串模式的列合并

如何基于R中的相似值合并两个数据帧

在字符串列-复合字符串列上合并两个数据帧

如何根据组内的子字符串匹配两个数据帧

如何合并基于字符串包含的两个数据框?

合并R中不同行的两个数据帧

基于R中的多个列合并两个数据帧

r比较两个数据帧中的字符串值

根据部分字符串匹配比较两个数据帧的两列

如何基于一个数据帧的行值是一个子字符串/包含在另一个数据帧的行值中来联接两个数据帧?

R在两个数据帧的列中的字符串之间找到重叠

匹配两个数据帧之间的字符串,并将缺少的字符串添加到R中不完整的字符串中

删除要在r中合并两个数据集的字符子字符串

在R中将两个数据帧相乘并合并

合并两个数据帧 r 进行回测

基于多个重叠合并两个数据帧

使用 ID 和匹配字符串合并两个数据帧

匹配 R 中部分字符串的两个数据帧

在 R 中,使用 for 循环比较两个数据帧的字符串变量以创建指示两个数据帧中匹配的新标志变量?

基于索引合并两个数据帧

如何在R中的列中合并具有特定字符串匹配的两个数据框?

基于子字符串合并数据帧-python

根据逗号分割元素是否是 Python 中另一列的子字符串,合并两个数据帧

如何基于使用一列的子字符串合并两个数据帧

通过字符串匹配来匹配和合并两个数据帧

当其中一个数据帧的列包含另一个数据帧中列的子字符串时,如何以时间高效的方式合并两个数据帧

基于列之间的部分字符串匹配合并 2 个数据帧

通过子字符串搜索连接pyspark中的两个数据帧

基于字符串匹配合并两个数据集