我是R的新手,但我遇到了一个需要一些帮助的问题。
假设我的数据CSV文件中有2列。 (让我们称之为X)
我还有另一个数据文件,我用它来检查CSV文件(我们称之为Y)。
X有3列数据,包含标题:a,b,c。
Y有3列数据,标题相同:a,b,c
我希望R用X中的a和b检查X中的a和b列。
如果X中的a和b分别与Y中的a和b匹配,则Y中的c列用于替换X中的c列。
X中的c列是什么并不重要。
我应该如何制定此代码?
X< - as.vector(a,b,c) Y< - as.vector(a,b,c)
for x in ...
任何帮助将不胜感激!
答案 0 :(得分:0)
使用联接构造:
我更喜欢使用dplyr,但基数中的merge
也是可能的。
set.seed(314)
x <- data.frame(a = sample(1:10,10),
b = sample(1:10,10),
c = sample(1:10,10))
y <- data.frame(a = sample(1:10,10),
b = sample(1:10,10),
c = sample(1:10,10))
library(dplyr)
x %>% left_join(y, by=c('a','b')) %>% mutate(c = ifelse(!is.na(c.y),c.y,c.x))
结果(我保留了c.x和c.y列以供说明):
a b c.x c.y c
1 1 4 7 NA 7
2 3 2 5 NA 5
3 7 9 9 NA 9
4 2 8 2 NA 2
5 8 10 1 NA 1
6 6 7 3 NA 3
7 10 3 10 NA 10
8 5 5 6 NA 6
9 9 1 8 4 4
10 4 6 4 NA 4