【发布时间】:2019-09-17 09:45:11
【问题描述】:
我想绘制以下数据:
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")
使用 tidyverse plot 我的代码如下:
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))
我运行一个回溯():
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 以小时和分钟显示时间(不包括日期)。
非常感谢
【问题讨论】:
-
不,这不是因为
NAs。当您2 + "t0400_0415_d1"时,您期望得到什么答案? -
@RonakShah 谢谢,所以基本上我需要将 t0400_0415_d1 转换为数字?
标签: r dataframe ggplot2 tidyr dplyr