【发布时间】:2023-04-07 10:53:01
【问题描述】:
我有一个以下示例数据集,我正在尝试使用 data.table 包重塑为长格式(请不要使用 dplyr 解决方案)。
test_data<-structure(list(id = c("a", "b", "c", "d"), demo_d1_alt = c(2,
3, 4, 5), demo_d1_pre = c(5, 4, 5, 5), demo_d2_alt = c(4, 5,
6, 7), demo_d3_alt = c(8, 9, 10, 11), demo_d3_pre = c(5, 5, 5,
5)), .Names = c("id", "demo_d1_alt", "demo_d1_pre", "demo_d2_alt",
"demo_d3_alt", "demo_d3_pre"), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -4L))
id demo_d1_alt demo_d1_pre demo_d2_alt demo_d3_alt demo_d3_pre
a 2 5 4 8 5
b 3 4 5 9 5
c 4 5 6 10 5
d 5 5 7 11 5
以下是我的代码和输出:
library(data.table)
data_long <- melt.data.table(
setDT(test_data), id.vars = "id",
measure.vars = patterns(alt = "alt",
prec= "pre"))
data_long
id variable alt prec
1: a 1 2 5
2: b 1 3 4
3: c 1 4 5
4: d 1 5 5
5: a 2 4 5
6: b 2 5 5
7: c 2 6 5
8: d 2 7 5
9: a 3 8 NA
10: b 3 9 NA
11: c 3 10 NA
12: d 3 11 NA
我的预期输出是(因为只有 demo_d2 没有 prec)
data_long
id variable alt prec
1: a 1 2 5
2: b 1 3 4
3: c 1 4 5
4: d 1 5 5
5: a 2 4 NA
6: b 2 5 NA
7: c 2 6 NA
8: d 2 7 NA
9: a 3 8 5
10: b 3 9 5
11: c 3 10 5
12: d 3 11 5
请提出建议。
【问题讨论】:
-
请参阅 this issue 和 a related discussion 了解导致我的草稿
ReshapeLong_()function 的原因。
标签: r data.table reshape