Удалить NA из цикла for на основе столбца

Привет и спасибо за поиск,

Мой вопрос касается цикла for ниже. У меня есть набор данных таксонов с предикторами среды обитания. Цикл for вычисляет средневзвешенные значения допуска "WaterTemp" для каждого таксона. Это работает, если нет значений NA, однако мой набор данных разбросан по ним.

Как удалить значения NA, не пропуская целые строки?

т.е. в строке 2 только сравнение "Drunella" и "WaterTemp" будет опущено в расчете WA для "Drunella", но остальные таксоны имеют значения. Аналогично, в "Acentrella" отсутствуют данные в строке 3, но есть данные для остальных таксонов. Однако, если "WaterTemp" отсутствует, следует удалить всю строку.

Я пробовал различные варианты с complete.cases и na.rm внутри цикла for. Примеры, которые я искал, пропустили бы целые строки.

#Example data frame
Acentrella Ameletus Diphetor Caenis Drunella Fallceon WaterTemp
1:       0.00     0.00     0.00      0   111.76        0     11.02
2:      63.63     4.54     0.00      NA   18.18        0     12.00
3:        NA      0.00     0.00      0    27.27        0     10.60
4:       0.00     6.89     0.00      0    10.34        0     10.80
5:      17.65    11.76     0.00      0    70.59        0      NA

taxa.names <- c("Acentrella", "Ameletus", "Diphetor", "Caenis",  
"Drunella", "Fallceon")

WA <- rep(NA, times = length(taxa.names))
# Define a WA to be vector of a length the same as the
# number of taxa of interest

for (i in 1:length(taxa.names)) {
WA[i] <- sum(dfmerge2[[taxa.names[i]]]*dfmerge2$WaterTemp)/
sum(dfmerge2[[taxa.names[i]]])
}

names(WA) <- taxa.names
print(WA)

#example output
Acentrella Ameletus Diphetor Caenis Drunella Fallceon
   12.57      9.44     12.20  13.43   11.49   13.91

Большое спасибо за любые предложения

0 ответов

Другие вопросы по тегам