簡體   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