【发布时间】:2021-02-04 05:14:00
【问题描述】:
我已经尝试了多个线程和多次尝试,但我还没有能够破解这个,所以如果这是重复的,请原谅我。
我有一个看起来像这样但列更多的数据框(因此希望解决方案可以自动化):
| id | Q1_wave1 | Q1_wave2 | Q1_wave3 | Q1_wave4 | Q2_wave1 | Q2_wave3 | Q3_wave1 | Q3_wave2 | Q3_wave3 |
|----|----------|----------|----------|----------|----------|----------|----------|----------|----------|
| 1 | 50 | 30 | 40 | 60 | Yes | Yes | 20 | 40 | 60 |
| 2 | 10 | 20 | 30 | 40 | No | Yes | 10 | 5 | 70 |
| 3 | 20 | 40 | 60 | 80 | Yes | No | 5 | 10 | 15 |
我希望我的输出如下所示:
| id | wave | Q1 | Q2 | Q3 |
|----|------|----|-----|----|
| 1 | 1 | 50 | Yes | 20 |
| 1 | 2 | 30 | | 40 |
| 1 | 3 | 40 | Yes | 60 |
| 1 | 4 | 60 | | |
| 2 | 1 | 10 | No | 10 |
| 2 | 2 | 20 | | 5 |
| 2 | 3 | 30 | Yes | 70 |
| 2 | 4 | 40 | | |
| 3 | 1 | 20 | Yes | 5 |
| 3 | 2 | 40 | | 10 |
| 3 | 3 | 60 | No | 15 |
| 3 | 4 | 80 | | |
我试过用这种方式重塑:
df_long<-reshape(df_wide,
direction="long",
varying=2:ncol(df_wide),
idvar='id',
timevar="wave",
v.names=c("Q1","Q2","Q3"),
sep="_")
并得到错误:
length of 'v.names' does not evenly divide length of 'varying'
当它是单个变量或面板平衡时,我看到的所有示例似乎都运行良好,但我无法找到在这种情况下工作的东西。 pivot_longer() 也躲过了我。提前致谢!
【问题讨论】: