我想计算每个变量在所有样本中出现的次数。我有20个变量(var1,var2,var3等)和1000个样本(ID 1、2、3等)。
df1 :
ID var1 var2 var3
1 10 57 16
2 8 66 34
3 7 0 57
4 0 90 94
5 20 44 33
该物种在df1中出现了多少个样本,可以说与0不同:
result :
var1 var2 var3
4 4 5
答案 0 :(得分:2)
您可以尝试:
colSums(df1[,2:4]>0)
输出:
var1 var2 var3
4 4 5
答案 1 :(得分:1)
一个残酷的解决方案是使用apply(df1[ ,2:ncol(df1)], 2, function(x){sum(x != 0)})
函数
{{1}}
答案 2 :(得分:1)
dplyr
的变体可以是:
df %>%
summarise_at(-1, ~ sum(. != 0))
var1 var2 var3
1 4 4 5
答案 3 :(得分:0)
假设负出现是不可能的,那么符号解决方案的总和就起作用了。
colSums(sign(df1[names(df1) != "ID"]))