R 如何在不接收无效字符错误的情况下聚合字符和数值
我想绘制以下数据:R 如何在不接收无效字符错误的情况下聚合字符和数值,r,dataframe,ggplot2,tidyr,mutate,R,Dataframe,Ggplot2,Tidyr,Mutate,我想绘制以下数据: 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"),
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绘图,我的代码如下:
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))
我运行了一个回溯():
你能帮我解决这个错误吗
我还有一个基本问题,就是如何更改此代码
as.POSIXct(paste0("2000-01-01 ", timeofday, ":00")))
以小时和分钟(无日期)显示从04:00开始到03:45结束的时间
非常感谢如果我们需要以分钟为单位的单位差异,请使用
提取(tidyr
)将“时间”列拆分为两个(“时间1”、“时间2”),转换为Datetime类(as.POSIXct
)获取列之间的差异,并添加“周日夜班”列
library(tidyverse)
NightShifts %>%
extract(time, into = c("time1", "time2"),
"^t(\\d+)_(\\d+)_.*", remove = FALSE) %>%
mutate_at(vars(time1, time2), as.POSIXct, format = "%H%M") %>%
mutate(Diff = as.numeric(difftime(time2, time1, unit = "min") +
`Sunday NightShifts`))
不,这不是因为NA
s。当您执行2+“t0400\u 0415\u d1”
时,您希望得到什么样的答案?@Ronaksah谢谢,所以基本上我需要将t0400\u 0415\u d1转换为数字?感谢您的帮助和时间-好主意-当我运行代码时,我在[.data.frame
(,time,into=c(“time1”,“time2”),“^t(\\d+)\ud+”中收到以下错误,:未使用的参数(into=c(“time1”,“time2”),remove=FALSE)@user10974052我猜您使用的是tidyr::extract
,如果它被另一个同名函数屏蔽(来自magrittr
),请明确指定夜班%>%tidyr::extract(time,into=
as.POSIXct(paste0("2000-01-01 ", timeofday, ":00")))
library(tidyverse)
NightShifts %>%
extract(time, into = c("time1", "time2"),
"^t(\\d+)_(\\d+)_.*", remove = FALSE) %>%
mutate_at(vars(time1, time2), as.POSIXct, format = "%H%M") %>%
mutate(Diff = as.numeric(difftime(time2, time1, unit = "min") +
`Sunday NightShifts`))