Спасибо за предыдущие посты и профессиональные ответы. Я могу почти сделать свой анализ, кроме тех условий с NA. Вот мой data.frame
и используемый код. Не могли бы вы научить меня, как решить проблему, когда условие содержит значение NA?
df1 <- data.frame(A = c(1,2,4, 5), B=c(1,3,NA,1), C=c(1,1,3, NA), D=c(1,1,2,2))
Используя этот код, я получаю df1 следующим образом:
A B C D
1 1 1 1 1
2 2 3 1 1
3 4 NA 3 2
4 5 1 NA 2
С помощью Andrie, Sacha Epskamp и Chase ( R: получить средний столбец A на основе диапазона значений в столбце B ), я получил средние значения A, когда D находится между 1 и 3 в данном случае 2 с этим кодом.
mean(df1$A[df1$D>1 & df1$D<3])
Я получил ответ как 4,5, как и ожидалось (среднее значение 4 и 5 в столбце A).
Однако, когда я заменяю столбец D на столбец C, который содержит NA. Мой ответ может быть только NA. в то время как я ожидал увидеть средний ответ 1 и 2, пренебрегая 3-й строкой (больше 2) и 4-й строкой (с NA) в столбце C.
mean(df1$A[df1$C>0 & df1$C<2])
R> NA (i expect the count to be 1.5)
Я знаю, na.omit
может удалить все строки с na
в любых записях в df1
. Однако я предпочитаю этого не делать, так как я также хотел бы получить среднее значение и число для каждого столбца, когда запись в одном столбце равна NA. (Например, я также хочу провести анализ среднего значения (df1 $ A, [is.na (df1 $ C)]).
Я также пытался проверить, используя na.rm=T
в условной части, но R не распознал его, так как теперь NA находится в условной части. Например:
mean(df1$A[df1$C>0 & df1$C<2, na.rm=T])
Error in df1$A[df1$C > 0 & df1$C < 2, na.rm = T] :
incorrect number of dimensions
Я считаю, что есть более разумный способ сделать это. Просьба любезно совет.