【发布时间】:2021-12-19 03:11:21
【问题描述】:
我是 R 新手。 我正在尝试将日期/时间分成不同的列。
列中的格式是 4/12/2016 12:00:00 AM
我已经尝试了几种方法,但没有任何效果。有人可以解释我哪里出错了以及如何解决它吗?
我的第一次尝试:
sdo<- sleepday %>% separate(SleepDay,c("Date","Time"),sep=" ") %>% format (as.POSIXct(data$all),format = "%H:%M:%S")
我的第二次尝试:
当我尝试仅使用以下内容时,我没有得到完整的日期和时间。结果只是按月份分开,我假设是分钟数:
sdo<- sleepday %>% separate(SleepDay,c("Date","Time")
the results using code chunk above
然后我在几个网站上阅读了它并尝试了以下代码块并再次收到此消息:
Error in data$SleepDay : object of type 'closure' is not subsettable
>
dt_sleep <- sleepday %>% format (as.POSIXct(data$SleepDay),format = "%H:%M:%S")
>
>
> dput(head(sleepday))
structure(list(Id = c(1503960366, 1503960366, 1503960366, 1503960366,
1503960366, 1503960366), SleepDay = c("4/12/2016 12:00:00 AM",
"4/13/2016 12:00:00 AM", "4/15/2016 12:00:00 AM", "4/16/2016 12:00:00 AM",
"4/17/2016 12:00:00 AM", "4/19/2016 12:00:00 AM"), TotalSleepRecords = c(1,
2, 1, 2, 1, 1), TotalMinutesAsleep = c(327, 384, 412, 340, 700,
304), TotalTimeInBed = c(346, 407, 442, 367, 712, 320)), row.names = c(NA,
-6L), class = c("spec_tbl_df", "tbl_df", "tbl", "data.frame"), spec = structure(list(
cols = list(Id = structure(list(), class = c("collector_double",
"collector")), SleepDay = structure(list(), class = c("collector_character",
"collector")), TotalSleepRecords = structure(list(), class = c("collector_double",
"collector")), TotalMinutesAsleep = structure(list(), class = c("collector_double",
"collector")), TotalTimeInBed = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), delim = ","), class = "col_spec"), problems = <pointer: (nil)>)
>
【问题讨论】:
-
请包含生成数据(或类似数据)的代码,而不是屏幕截图。当您在屏幕上显示
SleepDay是字符数据还是日期时间数据时,它是模棱两可的,这些情况会导致不同的建议。请在您的问题正文中包含dput(sleepday)的输出,或者如果太长,请在dput(head(sleepday))中包含。 -
@JonSpring 我不确定如何在此站点上添加或生成数据,但我确实添加了您要求的 dput(head(sleepday))。小写的 sleepday 是数据框,大写的 SleepDay 是数据框中包含需要分隔的日期/时间的列。
-
您最初尝试的第一部分:
sleepday %>% separate(SleepDay,c("Date","Time"),sep=" ")工作得很好。我不确定你想用format位做什么——你没有一个名为all的变量或一个名为data的数据集。我怀疑你想做sleepday %>% separate(SleepDay,c("Date","Time"),sep=" ") %>% mutate(out = format(Time, format="%H:%M:%S"))之类的事情,但要小心你丢失了 AM/PM 位。 -
顺便说一句,在
sep=" "之后添加extra = "merge"将使 AM/PM 位保留在您的时间列中。 -
非常感谢你们,我知道这不是一门课,但我只是想了解这部分工作的原因@thelatemail mutate(out = format(Time, format="%H:% M:%S")) 你能帮我分解一下吗?不幸的是,这就是我的学习方式。如果您愿意,请提前感谢伙计们,如果没有,也可以。
标签: r dplyr error-code