假设我有:
T1 <- c("A","B","C","D","E", "M")
T2 <- c("F","G","H","I","J", "K")
score1 <- c(1,2,3,4,5, 6)
score3 <- c(7,8,9,10,11, 12)
score2 <- c(13, 14, 15, 16, 17, 18)
df1 <- data.frame(T2, T1, score1, score2, score3)
T1 <- c("A","D","C","B","K")
T2 <- c("f","g","h","i","j")
score1 <- c(-1,-2,-3,-4,-5)
score2 <- c(-13, -14, -15, -16, -17)
df2 <- data.frame(T1, T2, score1, score2)
> df1
T2 T1 score1 score2 score3
1 F A 1 13 7
2 G B 2 14 8
3 H C 3 15 9
4 I D 4 16 10
5 J E 5 17 11
6 K M 6 18 12
> df2
T1 T2 score1 score2
1 A f -1 -13
2 D g -2 -14
3 C h -3 -15
4 B i -4 -16
5 L j -5 -17
df1
代表原始值,但我有一个更新的df2
,它只记录了一些相同的变量.但是df2
是最新的,所以我想在df1$T1
与df2$T1
匹配时替换所有值(对于所有匹配列).
我想大概是df1[match(df1$T1, df2$T1),] <- df2
,但当它们是不同维度时,它就不起作用了,而且它也不会匹配相同的colnames.加入dfs很乏味,因为它实际上并不替换这些值(它会添加一个新列,如T2.y、score1.y等)
我想得到这样的东西:
> df1
T2 T1 score1 score2 score3
1 f A -1 -13 7
2 i B -4 -16 8
3 h C -3 -15 9
4 g D -2 -14 10
5 J E 5 17 11
6 K M 6 18 12