Преобразование значений в NA с условиями в R - PullRequest
1 голос
/ 20 июня 2019

Я пытаюсь преобразовать переменные в NA (отсутствует) с условиями

Это мои данные в качестве примера.У меня есть 5 идентификаторов пациентов, если в переменной missing есть '1', outcome1 и outcome2 будут преобразованы в NA (отсутствует).

  ID<-c("a","b","c","d","e")
  cond1<-as.factor(sample(x=1:7,size=5,replace=TRUE))
  cond2<-as.factor(sample(x=1:7,size=5,replace=TRUE))
  cond3<-as.factor(sample(x=1:7,size=5,replace=TRUE))
  missing<-as.factor(sample(x=0:1,size=5,replace=TRUE))
  outcome1<-sample(x=1:10, size=5,replace=TRUE)
  outcome2<-sample(x=1:10, size=5,replace=TRUE)
  df<-data.frame(ID,cond1,cond2,cond3,missing,outcome1,outcome2)
  df
   ID cond1 cond2 cond3 missing outcome1 outcome2
1  a     7     1     7       0       6       5
2  b     5     3     7       0       3       1
3  c     4     5     1       1       3       9
4  d     2     2     3       0       7       3
5  e     1     7     4       1       2       7

Я нашел replace_with_na_at функция, в naniar упаковке.однако, это не сработало.

df%>%
  replace_with_na_at(.vars=c("outcome1","outcome2"), condition = ~ hn10_14med$missing==1)

Error: Predicate functions must return a single `TRUE` or `FALSE`, not a logical vector of length 0
Call `rlang::last_error()` to see a backtrace

Как преобразовать переменную в NA с условиями?Если есть лучший способ, хотя и не используется функция replace_with_na_at, вы дайте мне знать.

1 Ответ

0 голосов
/ 20 июня 2019

Если вы хотите заменить значения на месте, просто используйте ifelse:

df[df$missing==1,c("cond1", "cond2")] <- NA
...