【问题标题】:New Data Frame Column with Conditional Value具有条件值的新数据框列
【发布时间】:2014-09-02 21:07:16
【问题描述】:

我正在尝试向数据框中添加一个新列并不断收到错误。

这是数据框procsdputhttps://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 &lt;- ifelse(procs$Group1+procs$Group2 &gt; 1, TRUE, FALSE)。或者如果您使用1 代表TRUE0 代表FALSEprocs$Group3 &lt;- ifelse(procs$Group1+procs$Group2 &gt; 1, 1, 0)
  • @nrussell 与procs$Group3 &lt;- procs$Group1+procs$Group2 &gt; 1相同
  • @hadley 谢谢,我忽略了这一点。
  • 谢谢你们。我最终使用了procs$GroupP3 &lt;- as.numeric(procs$GroupP1+procs$GroupP2 &gt; 1),我显然有很多学习要做,所以我非常感谢您花时间回复(用如此简单的解决方案)我试图让事情变得太复杂而产生的问题。
  • with(data, { (sum(GroupP1, GroupP2) &gt; 1)+0 })

标签: r plyr apply dplyr


【解决方案1】:

这并不漂亮,但它产生了预期的结果。

procs_count <- nrow(procs)
i <- 1
while(i<= procs_count){
  procs$GroupP3[i] <- ifelse(procs$GroupP1[i] + procs$GroupP2[i] > 1, 1, 0)
  i <- i+1
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多