繁体   English   中英

基于R中的特定条件的列中的总和

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM