如何计算每个数据帧行中的非空值

时间:2020-12-30 19:54:18

标签: r pandas

给定 R 中的数据框,我如何确定每行非空白值的数量。

col1 col2 col3 rowCounts
1     3        2
      1    6   2
           1   1
               0

这就是我在 python 中的做法:

df['rowCounts'] = df.apply(lambda x: x.count(), axis=1)

这个的 R 代码是什么?

1 个答案:

答案 0 :(得分:3)

base R 中,我们可以使用(假设 NA 为空白)rowSums 作为逻辑矩阵 (!is.na(df)) 上的矢量化选项,其中 TRUE ({{1} } 即非 NA) 值将为每行添加 ->1

rowSums

-输出

df$rowCounts <- rowSums(!is.na(df))

如果空白是df # col1 col2 col3 rowCounts #1 1 3 NA 2 #2 NA 1 6 2 #3 NA NA 1 1 #4 NA NA NA 0

""

或者使用 df$rowCounts <- rowSums(df != "", na.rm = TRUE) apply 作为与 Python 类似的语法(尽管与 MARGIN = 1 相比它会更慢)

rowSums

数据

df$rowCounts <- apply(df, 1, function(x) sum(!is.na(x)))