繁体   English   中英

R:在 dataframe 单元格搜索中插入值,从另一个 dataframe 中提取它

[英]R: insert value in dataframe cell searching extracting it from another dataframe

我有一台 dataframe 如下所示:

          Date     Element         Problem   Losses
   1  2020-09-29        54     Energy loss       NA
   2  2020-09-30        54           Fault       NA
   3  2020-09-30        54     Energy loss       NA
   4  2020-09-29        40         Cooling       NA
   5  2020-09-29        50         Voltage       NA

每当problem列具有 substring“能量”时,我想在Losses列中插入某些值。

我需要插入的值在另一个 dataframe 中,如下所示:

       Date    Element       Losses
1 2020-09-29        54        13.24
2 2020-09-30        54        12.16

这只是一个例子,因为我使用的实际数据框非常大,所以我想通过DateElement列进行某种类型的合并,而不是循环遍历两个数据框。

编辑:

我尝试使用Element列的合并,所以首先我为所有相应的元素重复获取Losses ,然后将那些我没有想要的 substring 的行放回为 Nan。

我的问题是Element合并删除了我所有的其他行,只得到以下内容:

          Date     Element         Problem   Losses
   1  2020-09-29        54     Energy loss    13.24
   2  2020-09-30        54           Fault       NA
   3  2020-09-30        54     Energy loss    12.16

基础 R 解决方案:

transform(df, Losses = insert_df$Losses[match(paste0(Date, Element, grepl("Energy", Problem)),
                                              paste0(insert_df$Date, insert_df$Element, "TRUE"))])

数据:

df <- structure(list(Date = structure(c(18534, 18535, 18535, 18534, 
18534), class = "Date"), Element = c(54L, 54L, 54L, 40L, 50L), 
Problem = c("Energy loss", "Fault", "Energy loss", "Cooling", 
"Voltage"), Losses = c(NA, NA, NA, NA, NA)), row.names = c(NA, 
-5L), class = "data.frame")

insert_df <- structure(list(Date = structure(18534:18535, class = c("IDate", 
"Date")), Element = c(54L, 54L), Losses = c(13.24, 12.16)), class = "data.frame", row.names = c(NA, 
-2L))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM