2017-11-01 2 views
1

"var1"... "var3"열이있는 data.frame "data"가 있습니다. 이제 세 개의 var-columns에서 새로운 열 "sum"을 계산하고 싶습니다.행의 합계 (NA 포함) R

var1 var2 var3 sum 
NA NA 300 300 
20 NA NA  20 
10 NA NA  10 

내가 합계 열을 계산하기 위해 첫 번째 순서에 NA의 0을 교체해야하거나 더 우아한 방법이 있나요 : 불행하게도, 세 가지 중 모든 행에 하나 개의 변수에 값을 가지고? 고맙습니다! 단 하나의 비 NA 요소가있는 경우

답변

3

우리는 또한 rowSums

df1$sum <- rowSums(df1[grep("^var\\d+", names(df1))], na.rm = TRUE) 

사용할 수 있습니다, 또 다른 옵션은 data.table을 사용하여

do.call(pmax, c(df1[1:3], na.rm = TRUE)) 
+1

고마워요! 그게 내가 찾고 있던거야! –

1

, 당신도 시도 할 수 있습니다 :

df <- data.frame(var1 = c(NA, 20, 10), 
       var2 = c(NA, NA, NA), 
       var3 = c(300, NA, NA)) 
library(data.table) 
dt <- as.data.table(df) 
dt[, sum := rowSums(.SD, na.rm = TRUE), .SDcols = c("var1", "var2", "var3")]