当一个 Dataframe 中的值与另一个小得多的 Dataframe 中的标识符匹配时,我试图替换其中的值。
df1 = data.frame(row = seq(1,6),
x = c("a","b","c","d","e","f"))
df2 = data.frame(row = c(5,3,1,15,10),
x2 = c("g","h","i","j","k"))
df3 = df1 %>% mutate(x = case_when(
df1$row == df2$row ~ df2$x2,
.default = df1$x
))
我尝试读取以下内容:当df1$row与df2$row匹配时,用df2$x2中的值替换df1$x,否则保留df1$x。
df3
row x
1 1 i
2 2 b
3 3 h
4 4 d
5 5 g
6 6 f
任何帮助都感激不尽。
2条答案
按热度按时间7tofc5zh1#
我们可以用
row
乘以join
,然后使用coalesce
:qhhrdooz2#
使用dplyr 1.1.0:
结果
如果两个表具有相同的行名称,则会更简单: