查找来自2个数据帧的列的方差

时间:2017-08-22 17:26:51

标签: r

我有2个数据帧

DataFrame A和Dataframe B.

   A <- data.frame(a=c(1,2,3,4,5),b=c(2,4,6,8,10),c=c(3,6,9,12,15),x=c(4,8,12,16,20),y=c(5,10,15,20,25))

 B <- data.frame(a=c(1,2,3,4,5),b=c(2,4,6,8,10),c=c(3,6,9,12,15),x=c(4,8,12,16,20),y=c(5,10,15,20,25))

          A
      a   b   c   x   y
      1   2   3   4   5
      2   4   6   8  10
      3   6   9  12  15
      4   8  12  16  20
      5  10  15  20  25

          B
     a   b   c   x   y
     1   2   3   4   5
     2   4   6   8  10
     3   6   9  12  15
     4   8  12  16  20
     5  10  15  20  25

预期产出:

  C
  a   b   c   x   y
  1   0   0   0   0
  2   0   0   0   0
  3   0   0   0   0
  4   0   0   0   0
  5   0   0   0   0

两者都有一个字母数字键。

两个数据帧共有260列,其中250列是浮点数。

是否有一种eaiser方法可以轻松计算250列中每一列的方差并将方差存储在另一个数据帧中?

2 个答案:

答案 0 :(得分:0)

我认为您希望在两个数据帧的各个列之间存在差异

temp = names(A)
data.frame(A["a"], do.call(cbind, lapply(temp[!temp %in% "a"], function(x) A[x] - B[x])))
#  a b c x y
#1 1 0 0 0 0
#2 2 0 0 0 0
#3 3 0 0 0 0
#4 4 0 0 0 0
#5 5 0 0 0 0

答案 1 :(得分:0)

我们可以使用Map/mapply来查找&#39; A&#39;的相应列之间的差异。和&#39; B&#39;

cbind(A[1], mapply(`-`, A[-1], B[names(A)[-1]]))
#  a b c x y
#1 1 0 0 0 0
#2 2 0 0 0 0
#3 3 0 0 0 0
#4 4 0 0 0 0
#5 5 0 0 0 0

或者只是

cbind(A[1], A[-1] - B[-1])