Я пытаюсь очистить набор данных опроса, и у меня возникли проблемы с условиями.Спасибо всем, кто ответил на мой последний вопрос, но этот вопрос немного отличается и ставит меня в тупик.
У меня есть набор данных, подобный приведенному ниже.Я пытаюсь написать заявление так:
- Если X, Y и Z все #NULL !, это меняет эти #NULL!записи в НС.Переменная a предназначена для представления более 90+ переменных, входящих в набор, с которыми я не хочу связываться.
- Если в любом X, Y или Z есть числа, #NULL изменится на 0.
Вот примерный набор данных, который я построил и который показывает, что я имею в виду:
set.seed(2)
df <- data.frame(
X = as.factor(sample(c("1.00", "#NULL!"), 10, replace = TRUE)),
Y = as.factor(sample(c("2.00", "#NULL!"), 10, replace = TRUE)),
Z = as.factor(sample(c("3.00", "#NULL!"), 10, replace = TRUE)),
a = as.factor(sample(c("4.00", "#NULL!"), 10, replace = TRUE))
)
df
Вывод:
> df
X Y Z a
1 1.00 2.00 #NULL! 4.00
2 1.00 2.00 3.00 #NULL!
3 #NULL! #NULL! #NULL! 4.00
4 #NULL! 2.00 3.00 4.00
5 1.00 #NULL! 3.00 #NULL!
6 #NULL! 2.00 3.00 #NULL!
7 #NULL! #NULL! 3.00 #NULL!
8 #NULL! #NULL! 3.00 4.00
9 #NULL! 2.00 #NULL! #NULL!
10 1.00 #NULL! 3.00 4.00
В этом случае все нулевые значения для X, Y и Z должны быть равны 0, кроме строки 3, где они должныбыть сделано NA.Колонка А должна оставаться нетронутой.У кого-нибудь есть идеи, как к этому подойти?Несколько запутанных операторов ifelse()
не сработали, и я пытался изменить сценарий dplyr
, который кто-то предложил для другой проблемы, но я также не могу заставить это работать.
Спасибо!