我正在处理一个数据集,大致如下所示:
| ID|测量A|测量B|
| --|--|--|
| 1 | 3 | 1 |
| 2 | 10 | 0 |
| 2 | 4 | 3 |
| 3 | 3 | 11 |
| 4 | 7 | 10 |
| 4 | 8 | 4 |
| 4 | 9 | 6 |
| 5 | 19 | 11 |
| 5 | 11 | 8 |
| 6 | 5 | 9 |
...
我需要的是一个输出表,每个ID变量只有一次,并且有尽可能多的测量A和测量B的列。考虑到一些ID不重复,并且它们重复的次数并不总是相同,如示例所示。预期的输出表看起来像这样:
| ID|测量A1|测量A2|测量A3|测量B1|测量B2|测量B3|
| --|--|--|--|--|--|--|
| 1 | 3 |NA| NA| 1 |NA| NA|
| 2 | 10 | 4 |NA| 0 | 3 |NA|
| 3 | 3 |NA| NA| 11 |NA| NA|
| 4 | 7 | 8 | 9 | 10 | 4 | 6 |
| 5 | 19 | 11 |NA| 11 | 8 |NA|
| 6 | 5 |NA| NA| 9 |NA| NA|
...
我一直在这个问题上卡住了一段时间。谁能帮助我在RStudio中做到这一点?谢谢!
我尝试使用duplicate函数来区分重复的ID,然后执行长到宽的转换,但它实际上并不起作用。
2条答案
按热度按时间ilmyapht1#
尝试
tidyr
和dplyr
:字符串
创建于2023-10-30使用reprex v2.0.2
a5g8bdjr2#
使用base R,您可以首先使用
ave
在ID
s内分配索引,然后使用reshape
将字符串转换为宽格式,例如,字符串
你将获得
型