在R中具有不同大小的两个数据帧之间的操作

时间:2017-08-17 15:27:17

标签: r dataframe

我想在R中将两个不同大小的数据帧相加。

> x = data.frame(a=c(1,2,3),b=c(5,6,7))
> y = data.frame(x=c(1,1,1))

> x
  a b
1 1 5
2 2 6
3 3 7

> y
  x
1 1
2 1
3 1

我想要的结果是,

> 
  a b
1 2 6
2 3 7
3 4 8

我该怎么做?

2 个答案:

答案 0 :(得分:3)

我们可以使尺寸相同,然后得到总和

x + rep(y, ncol(x))
#  a b
#1 2 6
#2 3 7
#3 4 8

或另一个选项是sweep

sweep(x, y$x, 1, `+`)
#  a b
#1 2 6
#2 3 7
#3 4 8

答案 1 :(得分:3)

将y转换为unlist的向量可能最简单,然后执行操作。在这里,unlist(y)中的向量将在data.frame x。

的列上循环使用
x + unlist(y)
  a b
1 2 6
2 3 7
3 4 8

作为旁注,data.frames是一种特殊类型的列表对象,有时在列表上执行操作可能会涉及更多。另一方面,只要维度排列(这里,只要向量与data.frame中的行数相同),它们就可以很好地处理向量。