问题描述
当来自 df1 和 df2 的同一行列 (NameSize) 的值相等时,我试图将列 ConversionFactor(来自 df2)的每一行的值添加到 df1 的新列($value)。
>查看代码:
df1$value[df2$NameSize == df1$NameSize]
两个数据框的长度不一样,我有这个警告信息:
警告信息: 1:在 data_merged_2018_2019_1$NameSize == final_carbonfactor$NameSize 中: 较长的物体长度不是较短物体长度的倍数 2: 在 if (data_merged_2018_2019_1$NameSize == final_carbonfactor$NameSize) { : 条件的长度 > 1 并且只使用第一个元素
解决方法
如果您熟悉 tidyverse
的处理方式,他们有可用的 sqlite join 方法。您的解决方案最终会是这样的:
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 列,这样您就不会引入其中的其他内容。
编辑:添加了库调用和更多解释