使用 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.
推荐答案
Try 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屋!
查看全文