代码之家  ›  专栏  ›  技术社区  ›  Saurabh Chauhan

对R行中的非零项进行计数

r
  •  1
  • Saurabh Chauhan  · 技术社区  · 7 年前

       mode1 mode2 mode3
    1     8     1     0
    2     0     0     0
    3     6     5     4
    4     1     2     3
    5     1     1     1
    

    数据使用 dput :

    structure(list(mode1 = c(8L, 0L, 6L, 1L, 1L), mode2 = c(1L, 0L, 
    5L, 2L, 1L), mode3 = c(0L, 0L, 4L, 3L, 1L)), class = "data.frame", row.names 
    = c(NA,-5L))
    

    我需要计算R中非零项的数目。我面临的问题是:所有列都在R中 factor 所以如果我改成 numeric 然后更改数据值。

    预期产量:

       mode1 mode2 mode3 Count
    1     8     1     0   2
    2     0     0     0   0
    3     6     5     4   3
    4     1     2     3   3
    5     1     1     1   3
    

    基本上, count length(xml_df[1,]!=0) 但找不到答案。

    1 回复  |  直到 7 年前
        1
  •  6
  •   A. Suliman    7 年前

    在R座

    df$count <- rowSums(df!=0)
      mode1 mode2 mode3 count
    1     8     1     0     2
    2     0     0     0     0
    3     6     5     4     3
    4     1     2     3     3
    5     1     1     1     3
    

    使用dplyr

    library(dplyr)
    df %>% mutate(count=rowSums(.!=0))
    #For specific columns we can use
    df %>% mutate(count=rowSums(.[1:3]!=0))
    #OR
    df %>% mutate(count=rowSums(select(.,starts_with("mode"))!=0))