У меня есть следующий data.table:
structure(list(index = structure(c(1571270400, 1571356800, 1571616000,
1571702400, 1571788800, 1571875200, 1571961600, 1572220800, 1572307200,
1572393600), tzone = "", tclass = c("POSIXct", "POSIXt"), class = c("POSIXct",
"POSIXt")), A = structure(c(10L, 10L, 7L, 7L, 9L, 9L, 4L, 4L,
4L, 4L), .Label = c("12", "13", "14", "21", "24", "31", "34",
"41", "42", "43"), class = "factor"), AA = structure(c(2L, 2L,
2L, 2L, 2L, 7L, 7L, 7L, 7L, 7L), .Label = c("12", "13", "14",
"21", "23", "24", "31", "32", "34", "41", "42", "43"), class = "factor"),
AAC = structure(c(6L, 11L, 7L, 7L, 7L, 7L, 7L, NA, NA, 7L
), .Label = c("12", "13", "14", "21", "23", "24", "31", "34",
"41", "42", "43"), class = "factor"), AAL = structure(c(2L,
2L, 2L, 2L, 2L, 7L, 7L, 7L, 7L, 7L), .Label = c("12", "13",
"14", "21", "23", "24", "31", "32", "34", "41", "42", "43"
), class = "factor")), class = c("data.table", "data.frame"
), row.names = c(NA, -10L), .internal.selfref = <pointer: 0x5614347b5790>, sorted = "index")
Вот как эти данные выглядят в таблице -
index A B C D
1: 2019-10-17 43 13 24 13
2: 2019-10-18 43 13 43 13
3: 2019-10-21 34 13 31 13
4: 2019-10-22 34 13 31 13
5: 2019-10-23 42 13 31 13
6: 2019-10-24 42 31 31 31
7: 2019-10-25 21 31 31 31
8: 2019-10-28 21 31 <NA> 31
9: 2019-10-29 21 31 <NA> 31
10: 2019-10-30 21 31 31 31
Я хочу преобразовать их так, чтобы уникальные элементы встроки становятся именами столбцов, и эти столбцы затем показывают частоту этих элементов.
index 13 21 24 31 34 42 43 <NA>
1: 2019-10-17 2 0 1 0 0 0 1 0
2: 2019-10-18 2 0 0 0 0 0 2 0
3: 2019-10-21 2 0 0 1 1 0 0 0
4: 2019-10-22 2 0 0 1 1 0 0 0
5: 2019-10-23 2 0 0 1 0 1 0 0
6: 2019-10-24 3 0 0 0 0 1 0 0
7: 2019-10-25 3 1 0 0 0 0 0 0
8: 2019-10-28 2 1 0 0 0 0 0 1
9: 2019-10-29 2 1 0 0 0 0 0 1
10: 2019-10-30 3 1 0 0 0 0 0 0
Я уверен, что должен быть разумный способ сделать это, используя функции reshape или data.table. Очень поможет указатель в правильном направлении.