【发布时间】:2021-06-07 13:52:10
【问题描述】:
我有一个很长的数据集,我想扩展它,我想知道是否有一种方法可以使用 R 的 reshape 包一步完成。
数据框df如下所示:
Date Time value
<chr> <time> <dbl>
1 Wednesday 16:09 10.7
2 Wednesday 16:10 8.86
3 Wednesday 16:11 8.59
4 Wednesday 16:12 8.59
5 Wednesday 16:13 7.51
6 Wednesday 16:14 6.71
7 Wednesday 16:15 6.44
8 Wednesday 16:16 4.83
9 Wednesday 16:17 4.56
10 Wednesday 16:18 4.29
我想解决这个问题:
Date 16:09 16:10 16:11 16:12 ...
Wednesday 10.7 8.86 8.59 8.59
Sample code:
df_wide<-reshape(df, idvar = "Time", v.names="value", timevar = "Date" , direction = "wide")
Sample data:
structure(list(Date = c("Wednesday", "Wednesday", "Wednesday",
"Wednesday", "Wednesday", "Wednesday", "Wednesday", "Wednesday",
"Wednesday", "Wednesday", "Wednesday", "Wednesday", "Wednesday",
"Wednesday", "Wednesday", "Wednesday", "Wednesday", "Wednesday",
"Wednesday", "Wednesday", "Wednesday", "Wednesday", "Wednesday",
"Wednesday", "Wednesday", "Wednesday", "Wednesday", "Wednesday",
"Wednesday", "Wednesday", "Wednesday", "Wednesday"), Time = structure(c(58140,
58200, 58260, 58320, 58380, 58440, 58500, 58560, 58620, 58680,
58740, 58800, 58860, 58920, 58980, 59040, 59100, 59160, 59220,
59280, 59340, 59400, 59460, 59520, 59580, 59640, 59700, 59760,
59820, 59880, 59940, 60000), class = c("hms", "difftime"), units = "secs"),
value = c(10.733333, 8.855, 8.586667, 8.586667, 7.513333,
6.708333, 6.44, 4.83, 4.561667, 4.293333, 3.756667, 3.756667,
3.756667, 3.756667, 3.756667, 3.756667, 4.025, 3.756667,
4.025, 4.025, 4.025, 4.025, 5.635, 5.366667, 5.903333, 4.83,
4.83, 5.098333, 4.83, 7.781667, 7.245, 6.171667)), class = c("spec_tbl_df",
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -32L), spec = structure(list(
cols = list(Date = structure(list(), class = c("collector_character",
"collector")), Time = structure(list(format = ""), class = c("collector_time",
"collector")), value = structure(list(), class = c("collector_double",
"collector"))), default = structure(list(), class = c("collector_guess",
"collector")), skip = 1L), class = "col_spec"))
【问题讨论】:
-
我查看了
reshape,老实说,我无法弄清楚这个是如何工作的。所以我发布了一个(恕我直言)更简单的替代方案。