Я хотел бы построить следующие данные:
structure(list(`Sunday NightShifts` = c(2, 3, 3, 3, 3),
time = c("t0400_0415_d1", "t0415_0430_d1", "t0430_0445_d1", "t0445_0500_d1", "t0500_0515_d1"),
day = c("Sunday", "Sunday", "Sunday", "Sunday", "Sunday"),
`Monday NightShifts` = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_),
`Tuesday NightShifts` = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_),
`Wednesday NightShifts` = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_),
`Thursday NightShifts` = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_),
`Friday NightShifts` = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_)),
row.names = c(NA, 5L), class = "data.frame")
, используя график в обратном направлении, мой код следующий:
df <- as_data_frame(NightShifts) %>%
mutate(timeofday = rownames(NightShifts)) %>%
mutate(timeofday = as.POSIXct(paste0("2000-01-01 ", timeofday, ":00")))
df_long <- df %>%
gather("activity", "value", -timeofday) %>%
group_by(timeofday) %>%
mutate(rel_value = value / sum(value))
Однако после вышеприведенной строки (mutate(rel_value = value / sum(value)))
я получаюследующая ошибка:
Error in sum(value) : invalid 'type' (character) of argument
Это из-за NA
?
# plot the values as an area-plot
ggplot(df_long, aes(x = timeofday, y = rel_value, fill = activity)) + geom_area(aes(fill=activity)) + labs(x="Time", y="Probabilities", colour="NightShifts", fill="NightShifts") +
theme(legend.position="right", axis.text.x = element_text(angle = 90, hjust = 1))
Я запускаю traceback ():
11: eval(cols[[col]], .data, parent.frame())
10: eval(cols[[col]], .data, parent.frame())
9: mutate(., rel_value = value/sum(value))
8: function_list[[k]](value)
7: withVisible(function_list[[k]](value))
6: freduce(value, `_function_list`)
5: `_fseq`(`_lhs`)
4: eval(quote(`_fseq`(`_lhs`)), env, env)
3: eval(quote(`_fseq`(`_lhs`)), env, env)
2: withVisible(eval(quote(`_fseq`(`_lhs`)), env, env))
1: df %>% gather("activity", "value", -timeofday) %>% group_by(timeofday) %>%
mutate(rel_value = value/sum(value))
Не могли бы вы помочь мне решить эту ошибку?
Также у меня есть основной вопрос, как изменитьэтот код
as.POSIXct(paste0("2000-01-01 ", timeofday, ":00")))
для отображения времени в часах и минутах (без даты), начиная с 04:00 и заканчивая 03:45.
Большое спасибо