【发布时间】:2020-07-01 08:23:15
【问题描述】:
我有以下数据框:
df <- structure(list(ID = 1:4, col1.date = structure(c(1546188000,
1272294300, 1087908540, 1512241620), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), col2.date = structure(c(1546237740, 1272928800,
1087966800, 1512277200), class = c("POSIXct", "POSIXt"), tzone = "UTC"),
col3.date = structure(c(1546323000, 1272949200, 1088049600,
1512396000), class = c("POSIXct", "POSIXt"), tzone = "UTC"),
col1.result = c(1.31, 0.95, 3.3, 0.55), col2.result = c(1.19,
1.57, 1.6, 0.59), col3.result = c(0.97, 2.13, 1.1, 0.57)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -4L))
我希望每个 ID 有三行两列:结果和日期。
这是我尝试过的:
df_long <- df %>%
gather(v, value, col1.date:col3.result) %>%
separate(v, c("var", "col")
但是我将日期转换为数字。
我做错了什么?
【问题讨论】:
-
在您的
gather中,您正在组合numeric和POSIXct对象,因此它们都被强制转换为numeric。如果你想将它们结合起来,真的没有办法解决这个问题。当您稍后将它们与“正常”数字分开时,您的修复将是重新POSIX-ize 它们。 (顺便说一句,你的代码不完整,最后缺少一个右括号。你确定你给了我们实际的“工作”代码吗?)