给定 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 代码是什么?
答案 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)))