Я пытаюсь заменить 0 значений в столбце на основе условного размера их group_by срединным значением группы для большого набора данных.
set.seed(10000)
Data <- data.frame(
X = as.numeric(c(0,2,3,4,5,6,7,8,9,0)),
Y = c("no","yes","yes","yes","yes","yes","yes","yes","yes","yes"),
Z = c(F,T,T,T,T,F,F,F,T,T)
)
# change 0 in the 10 spot to median
Data <- Data %>%
# group by Y and Z then
group_by(Y,Z) %>%
# if the size of the group is less than 2 and if X is NA change it to 10
# else leave it as X else (if group size 2 or greater) leave value as NA then
mutate(X = ifelse(n()<2,ifelse(X==0,median(X),X),X))
# change 0 in 1 spot to median
Data <- Data %>%
# group by Y then
group_by(Y) %>%
# if the size of the group is larger than 2 and if X is NA change it to 1
# else leave is as X else(if group size 3 or larger) leave value as X
mutate(X = ifelse(n()<3,ifelse(X==0,median(X),X),X))
Возникла ошибка:
Ошибка в n> 1:
сравнение (6) возможно только для атомарных и списочных типов
Я ожидаю, что столбец X будет иметь последовательность 1:10 после вышеприведенного кода.
Это обобщение проблемы, с которой я сталкиваюсь, с большим набором данных, где я пытаюсь вписать 0 значений в качестве медианы для другой группы в зависимости от размера группы, и я получаю ту же ошибку, что и выше.