有没有办法用第二个 Dataframe 中的一列填充一个 Dataframe 中的一列?

Posted

技术标签:

【中文标题】有没有办法用第二个 Dataframe 中的一列填充一个 Dataframe 中的一列?【英文标题】:Is there a way to fill a column in one Dataframe with a column from a second Dataframe? 【发布时间】:2021-12-29 11:05:04 【问题描述】:

目标:从第二个 DF 的值中填充 1 个 Dataframe 中列的值。

我有一个包含以下内容的数据框:

DF1

ID ValueA Dates
Aaaaaa Na 02/13
Bbbbbb Na 03/13
Cccccc Na 04/13
Aaaaaa Na 03/14

DF2

ID ValueA Dates
Aaaaaa 12 02/13
Bbbbbb 19 03/13
Aaaaaa 15 03/14
Cccccc 13 04/13

我想将 DF2 中的 ValueA 放入 DF1 的 valueA 中,每个条目的匹配 ID 和日期不会导致偏移,因为它们的顺序可能不同,这是我目前遇到的问题。

DF1$ValueA

似乎没有做我想做的事。我也尝试过融合到没有运气的桌子上。

任何方向的帮助将不胜感激。谢谢

【问题讨论】:

您需要使用mergedplyrleft_join加入表格 如果我在两个 DF 中的列数不同怎么办?感谢您的回复和时间! 它仍然可以工作。尽管根据您想要对数据执行的具体操作,您可以选择 left_join、right_join、full_join 或 inner_join 【参考方案1】:

尝试使用dplyr rows_update -

DF1 <- dplyr::rows_update(DF1, DF2, by = c('ID', 'Dates'))
DF1

#      ID ValueA Dates
#1 Aaaaaa     12 02/13
#2 Bbbbbb     19 03/13
#3 Cccccc     13 04/13
#4 Aaaaaa     15 03/14

数据

如果您在reproducible format 中提供数据会更容易提供帮助

DF1 <- structure(list(ID = c("Aaaaaa", "Bbbbbb", "Cccccc", "Aaaaaa"), 
    ValueA = c(NA_character_, NA_character_, NA_character_, NA_character_
    ), Dates = c("02/13", "03/13", "04/13", "03/14")), 
   row.names = c(NA, -4L), class = "data.frame")

DF2 <- structure(list(ID = c("Aaaaaa", "Bbbbbb", "Aaaaaa", "Cccccc"), 
    ValueA = c(12L, 19L, 15L, 13L), Dates = c("02/13", "03/13", 
    "03/14", "04/13")), row.names = c(NA, -4L), class = "data.frame")

【讨论】:

关于数据格式的问题,非常抱歉,感谢您的回复!如果 DF1 的列/变量比 DF2 多,这是否也有效? 我试了代码,一直报错:x key values are not unique?你知道这可能是什么原因吗?

以上是关于有没有办法用第二个 Dataframe 中的一列填充一个 Dataframe 中的一列?的主要内容,如果未能解决你的问题,请参考以下文章