我有一个如下所示的数据框:
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
每当 Losses
列包含子字符串“Energy”时,我想在 problem
列中插入某些值。
我需要插入的值在另一个数据框中,如下所示:
Date Element Losses
1 2020-09-29 54 13.24
2 2020-09-30 54 12.16
这只是一个例子,因为我使用的实际数据框非常大,所以我想通过 Date
和 Element
列进行某种类型的合并,而不是循环遍历两个数据帧。
编辑:
我尝试通过 Element
列使用合并,所以首先我为所有相应的元素重复获取 Losses
,然后将那些行放在我没有想要的子字符串的地方回到南。
我的问题是通过 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
答案 0 :(得分:1)
基础 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))