基于R中的特定标准对列中的值求和

时间:2017-11-19 16:33:06

标签: 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

实现这一目标的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

您也可以使用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,并要求总结一个名为&#34; result&#34;的变量。列x1的总和,但仅限于== 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或0,因此当a列中存在零时,乘积将为零。

相关问题