[英]Sum values in a column based on a certain criteria in R
我有一个看起来像这样的数据框:
x1 x2 a b c
1 7 5 1 0 0
2 3 6 1 0 0
3 2 -1 0 1 0
4 0 1 0 1 0
5 0 6 1 0 0
6 8 10 0 0 1
7 14 8 0 0 1
8 12 11 0 0 1
9 11 13 0 0 1
10 10 12 0 0 1
我想将a = 1时的x1值相加。 我当时在想可以使用if语句,并且具有以下内容:
if(X$a==0){
result = sum(X$a)
}
我想要一个类似以下的输出:
result = 10
实现这一目标的最佳方法是什么?
您也可以为此使用dplyr。 该代码将是:
library(dplyr)
df<-data.frame(x1=c(7,3,2,0,0,8,14,12,11,10),
a = c(1,1,0,0,1,0,0,0,0,0))
df %>%
summarise(result = sum(x1[a==1]))
您将df推送到管道中,并要求在一个名为“结果”的变量中进行汇总,该变量是x1列的总和,但仅在a == 1的情况下。
同样适用于dplyr,但具有更明确的子集:
df %>%
filter(a==1) %>%
summarise(result=sum(x1))
首先过滤a == 1的行,然后对剩余的x1求和。
没有dplyr的另一种方式:
df$result<-df$x1*df$a
colSums(df)[3]
之所以可行,是因为a列中的值为1或零,因此,当a列中为零时,乘积将为零。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.