繁体   English   中英

根据 R 中 dataframe 的另一列的相等值,在新列(在第一个数据帧中)中添加值(来自第二个数据帧)

[英]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.

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