2016-07-15 3 views
-5

У меня есть кадр данных с 63 столбцами и 1128 строк.Условное суммирование в r

Столбцы состоят из weightsrep, lon lat, v1 ..... v60, где v [i] представляет данные о осадках.

Я хочу, чтобы создать вектор [1:60], который содержит сумму weightsrep, где v не равное 0.

Например (представьте себе это как столбцы):

Если вес респ = 0.2,0.3,0.2

и v1 = 10,0,8

тогда сумма weightreps = 0,2 + 0,2

+1

Вы можете просто использовать обычное подмножество R, например 'sum (df $ weightsrep [! (Df $ v == 0)])' –

+0

обеспечивают воспроизводимый пример. –

ответ

1
df <- data.frame(rep=c(0.2,0.3,0.2), 
       lon=c(35,36,37), 
       lat=c(-90,-91,-92), 
       v1=c(10,0,8), 
       v2=c(3,4,5), 
       v3=c(9,20,4)) 

v <- as.vector("numeric") 
for(i in 1:3) v[i] <- sum(df$rep[df[,i+3]!=0])