Представьте себе dataframe (это иллюстративный пример)Ошибка в R с месяцами как уровни. Это ошибка или логическая ошибка?
s <- c("January", "February", "March", "January", "March", "April")
t <- c(5, 3, 2, 3, 3, 7)
df1 <- as.data.frame(s)
df1[ , 2] <- t
Теперь для целей построения графиков, я хотел бы закрепить за месяц. Если я пишу код, а затем подвести итог:
library(dplyr)
df1$s <- factor(df1$s, levels = month.name)
summary <- df1 %>% group_by(a) %>% summarize(Sales = sum(V2))
Выходы являются правильными, но не в порядке:
April 7
February 3
January 8
March 5
Однако, если я делаю следующее:
df1$s <- as.factor(df1$s)
levels(df1$s) <- c("January", "February", "March", "April")
Summary <- df1 %>% group_by(s) %>% summarize(Sales = sum(V2))
Выход есть :
January 7
February 3
March 8
April 5
суммы ошибочны, но порядок верен. Почему это должно быть?
Это как он организует по месяцам в алфавитном порядке, затем прибегает к столбцу Month, не изменяя другие значения.
Я получаю правильный заказ, когда запускаю первый кусок кода. Хотя я предполагаю, что вы имеете в виду 'group_by (s)' вместо 'group_by (a)'. –
Вместо перезаписи попробуйте 'df1 $ s2 <- as.factor (df1 $ s); уровни (df1 $ s2) <- c («Январь», «Февраль», «Марш», «Апрель») ', и вы увидите, что вы неправильно используете присвоение уровня. Кроме того, fyi, вы можете запутаться в этих именах var, поскольку 't' и' summary' являются обычно используемыми встроенными функциями. – Frank