簡體   English   中英

跨多列求和

[英]Sum across multiple columns

我想這是一個非常基本的問題,但我有點迷茫。 我有三個變量:A,B和C,范圍是0-4。 我想取那些等於1的總數,並用總和創建一個新變量。 例如,如果變量A和B等於1,則新變量SumABC等於2。我嘗試使用mutate進行此操作,但我知道必須有一種更簡單的方法。

x <- mutate(z,
 SumABC = 
  ifelse(A == 1, 1, 
  ifelse(B ==1, 1, 
  ifelse(C ==1, 1, 
  ifelse(A ==1 & B ==1, 2,
  ifelse(A ==1 & C ==1, 2,
  ifelse(B ==1 & C ==1, 2,
  ifelse(A ==1 & B ==1 & C == 1, 3, 0))))))))

也許不是最復雜的,但是它可以工作:

df <- data.frame(A=sample(0:4,10,replace = T),B=sample(0:4,10,replace = T),C=sample(0:4,10,replace = T))

df$EQ1 <- rowSums(df == 1)

# Output

df

   A B C EQ1
1  2 3 3   0
2  1 4 4   1
3  1 3 4   1
4  2 4 3   0
5  1 4 1   2
6  1 3 1   2
7  1 2 2   1
8  1 4 4   1
9  2 4 4   0
10 2 3 4   0

編輯:

或者,如果您喜歡使用向量(相同大小):

vecs <- sapply(c('A','B','C'),function(x) sample(0:4,10,replace = T),simplify = F)

tsum <- (vecs$A == 1)*1 + (vecs$B == 1)*1 + (vecs$C == 1)*1

# output

> tsum
 [1] 0 0 1 0 0 0 0 1 0 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM