使用dplyr计算行中值的数量 [英] Count number of values in row using dplyr
本文介绍了使用dplyr计算行中值的数量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这个问题应该有一个简单,优雅的解决方案,但是我无法弄清楚,所以就解决了:
This question should have a simple, elegant solution but I can't figure it out, so here it goes:
假设我有以下数据集,我想要使用dplyr计算每行中2的数量。
Let's say I have the following dataset and I want to count the number of 2s present in each row using dplyr.
set.seed(1)
ID <- LETTERS[1:5]
X1 <- sample(1:5, 5,T)
X2 <- sample(1:5, 5,T)
X3 <- sample(1:5, 5,T)
df <- data.frame(ID,X1,X2,X3)
library(dplyr)
现在,以下工作:
df %>%
rowwise %>%
mutate(numtwos = sum(c(X1,X2,X3) == 2))
但是如何避免输入所有列名称?
But how do I avoid typing out all of the column names?
我知道如果没有 dplyr
,但更笼统地说,我想知道如何将 dplyr
的 mutate
与多个列,而无需输入所有列名称。
I know this is probably easier to do without dplyr
, but more generally I want to know how I can use dplyr
's mutate
with multiple columns without typing out all the column names.
推荐答案
尝试 rowSums
:
> set.seed(1)
> ID <- LETTERS[1:5]
> X1 <- sample(1:5, 5,T)
> X2 <- sample(1:5, 5,T)
> X3 <- sample(1:5, 5,T)
> df <- data.frame(ID,X1,X2,X3)
> df
ID X1 X2 X3
1 A 2 5 2
2 B 2 5 1
3 C 3 4 4
4 D 5 4 2
5 E 2 1 4
> rowSums(df == 2)
[1] 2 1 0 1 1
与 dplyr
:
> df %>% mutate(numtwos = rowSums(. == 2))
ID X1 X2 X3 numtwos
1 A 2 5 2 2
2 B 2 5 1 1
3 C 3 4 4 0
4 D 5 4 2 1
5 E 2 1 4 1
这篇关于使用dplyr计算行中值的数量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文