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