У меня есть таблица данных, которую я расплавил следующим образом:
library(data.table)
DT <- fread(
"ID country year Event_A Event_B
4 NLD 2002 0 1
5 NLD 2002 0 1
6 NLD 2006 1 1
7 NLD 2006 1 0
8 NLD 2006 1 1
9 GBR 2002 0 1
10 GBR 2002 0 0
11 GBR 2002 0 1
12 GBR 2006 1 1
13 GBR 2006 1 1",
header = TRUE)
melt(DT, id.var = setdiff(names(DT), c("Event_A", "Event_B")),
value.name = 'Event')[, variable := NULL][order(ID)]
# ID country year Event
# 1: 4 NLD 2002 0
# 2: 4 NLD 2002 1
# 3: 5 NLD 2002 0
# 4: 5 NLD 2002 1
# 5: 6 NLD 2006 1
# 6: 6 NLD 2006 1
# 7: 7 NLD 2006 1
# 8: 7 NLD 2006 0
# 9: 8 NLD 2006 1
#10: 8 NLD 2006 1
#11: 9 GBR 2002 0
#12: 9 GBR 2002 1
#13: 10 GBR 2002 0
#14: 10 GBR 2002 0
#15: 11 GBR 2002 0
#16: 11 GBR 2002 1
#17: 12 GBR 2006 1
#18: 12 GBR 2006 1
#19: 13 GBR 2006 1
#20: 13 GBR 2006 1
Однако, оглядываясь назад, я хочу иметь категорию Event в наборе расплавленных данных. Как мне убедиться, что эта информация сохраняется в расплавленных данных?
РЕДАКТИРОВАТЬ (из-за чрезмерного упрощения в исходном сообщении):
DT <- fread(
"ID country year Event_A Event_B Choice_A Choice_B
4 NLD 2002 0 1 0 1
5 NLD 2002 0 1 1 1
6 NLD 2006 1 1 0 1
7 NLD 2006 1 0 1 1
8 NLD 2006 1 1 1 1
9 GBR 2002 0 1 1 0
10 GBR 2002 0 0 1 1
11 GBR 2002 0 1 0 1
12 GBR 2006 1 1 1 1
13 GBR 2006 1 1 0 0",
header = TRUE)
DT<- melt(DT, measure = patterns("^Event_", "^Choice_"),
value.name = c("Event", "Choice"))[, variable := NULL][order(ID)]
Желаемый вывод:
# ID country year Event Event_Cat Choice Choice_Cat
# 1: 4 NLD 2002 0 A 0 A
# 2: 4 NLD 2002 1 B 1 B
# 3: 5 NLD 2002 0 A
# 4: 5 NLD 2002 1 B
# 5: 6 NLD 2006 1 A
# 6: 6 NLD 2006 1 B
# 7: 7 NLD 2006 1
# 8: 7 NLD 2006 0
# 9: 8 NLD 2006 1
#10: 8 NLD 2006 1
#11: 9 GBR 2002 0
#12: 9 GBR 2002 1
#13: 10 GBR 2002 0
#14: 10 GBR 2002 0
#15: 11 GBR 2002 0
#16: 11 GBR 2002 1
#17: 12 GBR 2006 1
#18: 12 GBR 2006 1
#19: 13 GBR 2006 1
#20: 13 GBR 2006 1