很抱歉,是否已经有人问过这个问题,以及标题是否很混乱。我确实看了一下,才发现有关重新格式化其中一列的值在输出数据集中用作列标题的问题。
我的数据集井井有条,因此“过滤器”是每一行的唯一值。我想更改它,以便每个人在每个采样季节内的ID对于每一行都是唯一的,因为每个人都有多个过滤器。基本上,我想重新格式化表1,使其看起来像表2。
Table 1
id season FilterI
1: 1 1 A
2: 1 1 B
3: 2 1 C
4: 2 1 D
5: 1 2 E
6: 1 2 F
Table 2
id season FilterI1 FilterI2
1: 1 1 A B
2: 1 2 E F
3: 2 1 C D
Reshape
似乎不起作用,因为第一个数据集中的所有列都不包含第二个数据集中的列标题。
答案 0 :(得分:0)
将dcast
与rowid
一起使用,将'long'更改为'wide'(假设示例数据为data.table
)
library(data.table)
dcast(Table1, id + season ~ paste0("FilterI", rowid(id)), value.var = "FilterI")
# id season FilterI1 FilterI2
#1: 1 1 A B
#2: 1 2 E F
#3: 2 1 C D