【发布时间】:2014-09-02 21:07:16
【问题描述】:
我正在尝试向数据框中添加一个新列并不断收到错误。
这是数据框procs 的dput:
https://gist.github.com/stuboo/21bd8580212ac2aa0cf3
产生:
PROCEDU1 PROCEDU2 PROCEDU3 PROCEDU4 GroupP1 GroupP2
13927 684- 7077 5979 7051 1 1
13928 685- 7051 708- 7032 1 0
13929 7052 1 0
我正在尝试通过确定 GroupP1 + GroupP2 的总和是否大于 1 来添加另一列(TRUE/FALSE)。
我试过这个:
procs$GroupP3 <- apply(procs, 1, function(x) as.numeric(procs$GroupP1[x] + procs$GroupP2[x]) > 1)
还有这个:
procs$GroupP3 <- apply(procs, 1, function(x) as.numeric((procs[x,]$GroupP1 + procs[x,]$GroupP2) > 1))
运气不好。
我想看到的是:
PROCEDU1 PROCEDU2 PROCEDU3 PROCEDU4 GroupP1 GroupP2 GroupP3
13927 684- 7077 5979 7051 1 1 1
13928 685- 7051 708- 7032 1 0 0
13929 7052 1 0 0
【问题讨论】:
-
procs$Group3 <- ifelse(procs$Group1+procs$Group2 > 1, TRUE, FALSE)。或者如果您使用1代表TRUE和0代表FALSE,procs$Group3 <- ifelse(procs$Group1+procs$Group2 > 1, 1, 0)。 -
@nrussell 与
procs$Group3 <- procs$Group1+procs$Group2 > 1相同 -
@hadley 谢谢,我忽略了这一点。
-
谢谢你们。我最终使用了
procs$GroupP3 <- as.numeric(procs$GroupP1+procs$GroupP2 > 1),我显然有很多学习要做,所以我非常感谢您花时间回复(用如此简单的解决方案)我试图让事情变得太复杂而产生的问题。 -
with(data, { (sum(GroupP1, GroupP2) > 1)+0 })