【问题标题】:Number of column values greater than 0 for given row? [duplicate]给定行的大于 0 的列值的数量? [复制]
【发布时间】:2017-01-25 00:10:16
【问题描述】:

我有一个如下所示的数据框:

col1  col2  col3
0     0     .4
.3    1     0
0     0     .8

我想创建一个新列来计算其他三行中大于 0 的列值的数量:

col1  col2  col3  col4
0     0     .4    1
.3    1     0     2
0     0     .8    1

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    你只需要使用apply函数:

    ## Example Data
    dd = data.frame(col1 = c(0, .3, 0), col2=c(0, 1, 0),
                            col3=c(0.4, 0, 0.8))
    apply(dd, 1, function(i) sum(i > 0))
    

    所以要添加这个也你现有的数据框:

    dd$col4 =  apply(dd, 1, function(i) sum(i > 0))
    

    或者,我们可以将数据框转换为逻辑值,然后使用rowSums

    rowSums(dd > 0)
    

    【讨论】:

      【解决方案2】:

      另一个选项是Reduce+ 在循环列以创建逻辑vectors 的list 之后

      dd$col4 <- Reduce(`+`, lapply(dd, `>`, 0))
      dd
      #  col1 col2 col3 col4
      #1  0.0    0  0.4    1
      #2  0.3    1  0.0    2
      #3  0.0    0  0.8    1
      

      【讨论】:

        猜你喜欢
        • 2019-03-01
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 2019-10-09
        • 2018-12-18
        • 1970-01-01
        • 2011-02-07
        相关资源
        最近更新 更多