[英]Fill na column of 2nd dataframe with 1st dataframe which are matching in R
[英]Add value (from 2nd dataframe) in new column (in 1st dataframe) based on equality value of another column from both dataframe in R
当来自 df1 和 df2 的同一行的列 (NameSize) 的值相等时,我试图将列 ConversionFactor (来自 df2) 的每一行的值添加到 df1 的新列 ($value)。
见代码:
df1$value[df2$NameSize == df1$NameSize] <- df2$ConversionFactor[df1$NameSize == df2$NameSize]
两个 dataframe 没有相同的长度,我有这个警告信息:
Warning messages: 1: In data_merged_2018_2019_1$NameSize == final_carbonfactor$NameSize: longer object length is not a multiple of shorter object length 2: In if (data_merged_2018_2019_1$NameSize == final_carbonfactor$NameSize) {: the condition has length > 1 and only将使用第一个元素
如果您熟悉tidyverse
的处理方式,他们有 sqlite 连接方法可用。 您的解决方案最终会是这样的:
library(dplyr)
d1.fixed <- d1 %>% left_join(
select( d2, NameSize, ConversionFactor )
) %>% rename( Value = ConversionFactor ) %>%
distinct( NameSize, Value, .keep_all=TRUE )
left_join 通过您指定的列“加入”数据,或自动检测并通知您。 我还确保确保 d2 仅包含 NameSize 和 ConversionFactor 列,因此您不会引入其中的其他内容。
编辑:添加库调用和更多解释
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.