【发布时间】:2018-06-18 00:21:51
【问题描述】:
我有一个数据框df。它看起来像:
xSample a b c
x 2 0 2
x1 3 0 0
x2 4 0 2
我有这段代码:
new_df <- as.data.frame(sapply(df[,-1], function(x) sum(as.numeric(x) > 0)))
我想遍历df 的每一列并计算样本数并将其放入new_df,但前提是每个样本 A、B 或 C 的计数 > 0...@987654327 @应该看起来像这样:
NonZeroCounts
a 3
c 2
b 行未被保留,因为它在每一行中都有 0 个计数。
在我的df 上运行我上面提到的函数后,输出是:
xSample NonZeroCounts
a 3
b 0
c 2
【问题讨论】:
-
你可以删除
NonZeroCounts == 0所在的那一行。 Filter data.frame rows by a logical condition 应该可以帮助您。 -
...或者您可以在 ifelse 语句中包含 sum 语句,如果 sum 等于零,则返回 NULL ....它将删除该行。
-
data.frame(NonZeroCounts = sapply(df1[-1], function(x) sum(x>0))[colSums(df1[-1]) > 0]) -
@d.b 这太好了,谢谢。如果您将此添加为答案,我可以接受。
标签: r