首页 > 解决方案 > 根据两个 data.frames 创建 data.frame

问题描述

这个问题非常简单,但是如果不使用逐列迭代的 for 循环,我将无法做到这一点

我有两个具有相同索引列和不同列的 data.frames。我想创建一个新的 data.frame 比较两个 data.frames 中的值,如果值dfB大于dfA然后分配一个1否则 a 0。两个 data.frames 中的列名相同,并且都具有相同的行数。

data.frames 非常简单,这里有一个例子:

dfA=data.frame(index=1:5, B=c(0,0,1,0,2), C=c(0,0,0,0,1))
dfB=data.frame(index=1:5, B=c(1,1,2,0,2), C=c(0,1,0,2,1))

> dfA
index B C
    1 0 0
    2 0 0
    3 1 0
    4 0 0
    5 2 1


> dfB
index B C
   1 1 0
   2 1 1
   3 2 0
   4 0 2
   5 2 1

结果应该是这样的:

> dfC
index B C
   1 1 0
   2 1 1
   3 1 0
   4 0 1
   5 0 0    

标签: rdataframe

解决方案


如果您的 data.frames 如示例中所示,您可以执行以下操作:

dfC <- dfA
dfC[-1] <- as.integer(dfB[-1] > dfA[-1])
dfC
  index B C
1     1 1 0
2     2 1 1
3     3 1 0
4     4 0 1
5     5 0 0

[-1]on adata.frame选择除第一列之外的整个 data.frame。


推荐阅读