我有两个数据集具有不同数量的案例,但变量数量相同。例如,这:
test_data <- data.frame(
var_1 = rep(1, 10),
index = letters[1:10]
)
other_data <- data.frame(
var_1 = c(1, 1, 3, 4, 6, 1),
index = letters[1:6]
)
我需要的是将var_1
中的test_data
中的值替换为var_1
中other_data
的值。所以最终结果如下:
> test_data
var_1 index
1 1 a
2 1 b
3 3 c
4 4 d
5 6 e
6 1 f
7 1 g
8 1 h
9 1 i
10 1 j
我知道dplyr
很适合处理关系数据,但是我无法弄清楚它是否是_join
函数之一,它会为我做的,还是别的什么?感谢。
答案 0 :(得分:-1)
您可以使用合并:
merged <- merge( test_data, other_data, by = c('index'), all.x = TRUE )
merged$var <- ifelse( is.na( merged$var_1.y ) , merged$var_1.x, merged$var_1.y )
merged[ , c('var', 'index')]
var index
1 1 a
2 1 b
3 3 c
4 4 d
5 6 e
6 1 f
7 1 g
8 1 h
9 1 i
10 1 j
答案 1 :(得分:-1)
只是添加另一个答案:
使用Base R和match
。
test_data$var_1=other_data$var_1[match(test_data$index, other_data$index)]
test_data[is.na(test_data)] = 1
var_1 index
1 1 a
2 1 b
3 3 c
4 4 d
5 6 e
6 1 f
7 1 g
8 1 h
9 1 i
10 1 j
这将匹配index
下的值以从var_1
获取other_data
的值,然后将var_1
中的列test_data
替换为结果值
将生成NA&#39;因为index
test_data
列index
中的因素(字母)比other_data
pip install django==1.11.6 --upgrade --force
更多。那么我们用1替换NA值。
希望它有所帮助。