在R中进行这种操作的合并有什么用?见下文。
older <- data.frame(Member=c("first","second","third","fourth"),
VAL=c(NA,NA,NA,NA))
newer <- data.frame(Member=c("third","first"),
VAL=c(2125,4587))
#
merge.data.frame(older,newer,all=T)
Member VAL
1 first 4587
2 first NA
3 fourth NA
4 second NA
5 third 2125
6 third NA
上面的内容并不完全符合我的预期,我想用较新的条目替换较旧的条目,而不是添加另一行。如下。我使用merge.data.frame失败了。
my.merge.fu(older,newer)
Member VAL
1 first 4587
2 second NA
3 third 2125
4 fourth NA
有选择性的行替换,其中较新的优先级,并且不能包含其他成员而不是旧的成员。
这样的R操作是否有正确的英文术语,是否有预先构建的功能?
谢谢。
答案 0 :(得分:1)
您已经有效地回答了自己的问题。
如果你想处理Matthew Ploude的观点,你可以使用
older$VAL[match(newer[newer$Member %in% older$Member, ]$Member, older$Member)
] <- newer[newer$Member %in% older$Member, ]$VAL
这也是newer
有多个新值的结果,它是最新的older
,例如
older <- data.frame(Member=c("first","second","third","fourth"),
VAL=c(1234,NA,NA,5678))
newer <- data.frame(Member=c("third","first","fifth","first"),
VAL=c(2125,4587,2233,9876))
older$VAL[match(newer[newer$Member %in% older$Member,]$Member, older$Member)
] <- newer[newer$Member %in% older$Member,]$VAL
给出
> older
Member VAL
1 first 9876
2 second NA
3 third 2125
4 fourth 5678