【发布时间】:2018-07-13 09:30:35
【问题描述】:
这个问题非常简单,但是如果不使用逐列迭代的 for 循环,我就无法做到这一点
我有两个具有相同索引列和不同列的 data.frames。我想创建一个新的data.frame,比较两个data.frames中的值,如果dfB中的值大于dfA,则分配1,否则分配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
【问题讨论】:
-
一行也可以:
df=data.frame(1*(dfA[,-1]<dfB[,-1]))