Исключая NA в R - PullRequest
       56

Исключая NA в R

0 голосов
/ 03 апреля 2020

Я новичок в R Studio и постарался исключить все данные, на которые участники ответили менее чем на 17 вопросов. Я попытался использовать два варианта ниже:

data1  <- data[data$frequency.participant >= 17, ] 

data1 <-data[!(data$frequency.participant <17),]

Моя проблема в том, что оба работают, как, в, они устанавливают строки, для которых есть менее 17 ответов на NA. Но больше, чем показ NA, я хочу, чтобы эти строки были удалены. Что я делаю не так?

Вот пример того, как выглядел мой набор данных до запуска кода. Есть некоторые NA, но также есть ответы ниже 17.

Вот пример после запуска кода. Теперь все ниже 17 было заменено на NA.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Причина в том, что у вас есть значения NA в столбце частоты. Участники, которые не могут быть оценены, например. NA <= 17. Замените NA в этом столбце на 0, затем используйте свой код. </p>

data$frequency.participant[is.na(data$frequency.participant)]=0

или альтернативно

data1  <- data[data$frequency.participant >= 17 & !is.na(data$frequency.participant), ] 
0 голосов
/ 03 апреля 2020

Не зная, как выглядят ваши данные, этот ответ является предварительным: допустим, у вас есть такие данные:

set.seed(1)
df <- data.frame(
  frequency.participant = c(NA, 11, 22, 33, 44),
  other = rnorm(5)
)

df
  frequency.participant      other
1                    NA -0.8204684
2                    11  0.4874291
3                    22  0.7383247
4                    33  0.5757814
5                    44 -0.3053884

Если вы хотите исключить все строки в кадре данных, где frequency.participant значения <17 ИЛИ если у вас есть <code>NA токенов в том же столбце, вы можете сделать это:

df[!df$frequency.participant < 17 & !is.na(df$frequency.participant), ] 
  frequency.participant      other
3                    22  0.7383247
4                    33  0.5757814
5                    44 -0.3053884
...