【发布时间】:2020-01-08 23:54:25
【问题描述】:
dcastdata.table时,如果一个id属于多个类别/字段,默认返回length的值。
dta <- (data.table(ID = c("A", "C", "B", "A", "D", "D", "A", "B", "D", "D"),
CATEGORY_DUPLICATE = c(LETTERS[17:23], LETTERS[20:22]),
CATEGORY_UNIQUE = c(LETTERS[17:23], c("T", "U.1", "V.1")),
VALUE = c(400, 400, 500, 300, 500, 100, 200, 300, 400, 500)))
dcast(dta, ID ~ CATEGORY_DUPLICATE, value.var = "VALUE")
ID Q R S T U V W
A 1 0 0 1 0 0 1
B 0 0 1 1 0 0 0
C 0 1 0 0 0 0 0
D 0 0 0 0 2 2 0
如果一个 id 对应的类别不超过一个,那么它只返回实际值本身。我在示例表的U 和V 列中附加了一个1 来说明这一点。
dcast(dta, ID ~ CATEGORY_UNIQUE, value.var = "VALUE")
ID Q R S T U U.1 V V.1 W
A 400 NA NA 300 NA NA NA NA 200
B NA NA 500 300 NA NA NA NA NA
C NA 400 NA NA NA NA NA NA NA
D NA NA NA NA 500 400 100 500 NA
我希望在 dcast 查询本身中实现此结果 - 这样一个 id 的多个组会生成多个包含实际值的列 - 而不是 id 类别的 length。
请帮忙
【问题讨论】:
标签: r data.table reshape melt dcast