[英]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
这只是一个例子,因为我使用的实际数据框非常大,所以我想通过Date
和Element
列进行某种类型的合并,而不是循环遍历两个数据框。
编辑:
我尝试使用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.