R 使用重复值将数据从长变宽
这是根据我的实际数据稍微修改的随机样本。我想:R 使用重复值将数据从长变宽,r,reshape2,R,Reshape2,这是根据我的实际数据稍微修改的随机样本。我想: fill W id X T 1 403 29730 100 111 1 8395 10766 100 92 1 4170 14291 100 98 1 2768 20506 200 110 1 3581 15603 100 112
fill W id X T
1 403 29730 100 111
1 8395 10766 100 92
1 4170 14291 100 98
1 2768 20506 200 110
1 3581 15603 100 112
6 1 10504 200 87
9 48 29730 100 89
1 4790 10766 200 80
注意ID29730
同时位于T89
和111
中。但我认为这应该是重塑2::dcast
data\u-wide如果我理解正确,考虑到OP的要求,这不是一个简单的从长到宽的重塑问题:
必须维护行顺序
列的顺序必须为W
缺少的条目应显示为空白,而不是NA
这需要
- 要添加要包含在重塑公式中的行号
- 要将
W
转换为一个因子,其中因子水平通过使用forecats::fct_inoorder()
按外观排序,例如
- 要使用聚合函数,使用
toString()
在中打开NA
,
,例如
- 以及从重塑后的结果中删除行号
在这里,data.table
实现dcast()
被用作数据。table
看起来更方便,IMHO
id X T 403 8395 ....
29730 100 111 1
10766 100 92 1
14291 100 98
20506 200 110
15603 100 112
10504 200 87
29730 100 89
10766 200 80
资料
库(data.table)
data_long如果我理解正确,考虑到OP的要求,这不是一个从长到宽的问题:
必须维护行顺序
列的顺序必须为W
缺少的条目应显示为空白,而不是NA
这需要
- 要添加要包含在重塑公式中的行号
- 要将
W
转换为一个因子,其中因子水平通过使用forecats::fct_inoorder()
按外观排序,例如
- 要使用聚合函数,使用
toString()
在中打开NA
,
,例如
- 以及从重塑后的结果中删除行号
在这里,data.table
实现dcast()
被用作数据。table
看起来更方便,IMHO
id X T 403 8395 ....
29730 100 111 1
10766 100 92 1
14291 100 98
20506 200 110
15603 100 112
10504 200 87
29730 100 89
10766 200 80
资料
库(data.table)
这不就是一个重塑的问题吗<代码>tidyr::排列(df,W,fill)
可能重复这不只是一个重塑问题吗<代码>tidyr::排列(df、W、填充)
可能重复的
id T X 403 8395 4170 2768 3581 1 48 4790
1: 29730 111 100 1
2: 10766 92 100 1
3: 14291 98 100 1
4: 20506 110 200 1
5: 15603 112 100 1
6: 10504 87 200 6
7: 29730 89 100 9
8: 10766 80 200 1
library(data.table)
data_long <- fread(" fill W id X T
1 403 29730 100 111
1 8395 10766 100 92
1 4170 14291 100 98
1 2768 20506 200 110
1 3581 15603 100 112
6 1 10504 200 87
9 48 29730 100 89
1 4790 10766 200 80")