你能帮我算一下每种成分的YES答案数
我有一个数据集:
beef beet_broth beef_liver beer chicken
Yes Yes No Yes No
No Yes No Yes No
No No Yes Yes No
Yes Yes No Yes No
我想知道每列中YES的总和,如果0则不会出现在结果中:
Beef - 2
Beef_broth - 3
Beef_liver - 1
Beer - 4
我有数据集:384列,57 691行
答案 0 :(得分:2)
我们可以使用read(a);
read(b);
result := gcd(a, b);
i := 3;
while(i <= n){
read(a)
result := gcd(result, a);
}
print(result);
查找每列的colSums
值的数量(因为"Yes"
等于1而TRUE
等于零),然后是更高值的子集比零。
FALSE
答案 1 :(得分:1)
使用plyr
可能有一种更优雅的方式,但以下似乎是你想要的:
> yesses = sapply(recipes,FUN = function(x){length(x[x=="Yes"])})
> yesses
beef beet_broth beef_liver beer chicken
2 3 1 4 0
> yesses[yesses > 0]
beef beet_broth beef_liver beer
2 3 1 4
开启编辑。工作原理:数据帧是列向量列表。 sapply
获取列表和函数,并在列表中应用函数,将结果作为向量返回。在上面我使用了一个匿名函数,它使用逻辑子集来获取一列并提取等于“是”的条目。生成的子向量的长度是所需的计数。你可以先这样定义这个函数:
countYes = function(v){length(v[v=="Yes"])}
然后将yesses
定义为:
yesses = sapply(recipes,countYes)
完全如上所述。
免责声明:我对R本人比较陌生,但对Python有很多经验。我通常认为如何使用Python列表解析来解决问题,然后在R中解释它,这通常涉及apply
族中的子集和函数的某种组合。生成的代码可以根据需要运行,但可能不是非常惯用的。