使用R(dplyr)中的多个变量将宽数据重塑为长数据

塔克

我有一个3波以上的青少年数据集。我需要将数据从宽到长整形,但是我无法弄清楚如何使用pivot_longer(我检查了其他问题,但也许我错过了一个?)。以下是示例数据:

有数据:

id c1sports c2sports c3sports c1smoker c2smoker c3smoker c1drinker c2drinker c3drinker 
 1       1        1        1        1        1        4         1         5         2
 2       1        1        1        5        1        3         4         1         4
 3       1        0        0        1        1        5         2         3         2
 4       0        0        0        1        3        3         4         2         3
 5       0        0        0        2        1        2         1         5         3
 6       0        0        0        4        1        4         4         3         1
 7       1        0        1        2        2        3         1         4         1
 8       0        1        1        4        4        1         4         5         4
 9       1        1        1        3        2        2         3         4         2
10       0        1        0        2        5        5         4         2         3

想要的数据:

id wave sports smoker drinker
 1   1      1      1       1
 1   2      1      1       5
 1   3      1      4       2
 2   1      1      5       4
 2   2      1      1       1
 2   3      1      3       4
 3   1      1      1       2
 3   2      0      1       3
 3   3      0      5       2
 4   1      0      1       4
 4   2      0      3       2
 4   3      0      3       3
 5   1      0      2       1
 5   2      0      1       5
 5   3      0      2       3
 6   1      0      4       4
 6   2      0      1       3
 6   3      0      4       1
 7   1      1      2       1
 7   2      0      2       4
 7   3      1      3       1
 8   1      0      4       4
 8   2      1      4       5
 8   3      1      1       4
 9   1      1      3       3
 9   2      1      2       4
 9   3      1      2       2
10   1      0      2       4
10   2      1      2       2
10   3      0      5       3

到目前为止,我唯一能够运行的想法是:

long_dat <- wide_dat %>% 
            pivot_longer(., cols = c1sports:c3drinker)

但这并没有为我分别列出运动,吸烟者和饮酒者的专栏。

罗纳克·沙

您可以在中使用names_pattern参数pivot_longer

tidyr::pivot_longer(df, 
                    cols = -id, 
                    names_to = c('wave', '.value'), 
                    names_pattern = 'c(\\d+)(.*)')

#     id wave  sports smoker drinker
#   <int> <chr>  <int>  <int>   <int>
# 1     1 1          1      1       1
# 2     1 2          1      1       5
# 3     1 3          1      4       2
# 4     2 1          1      5       4
# 5     2 2          1      1       1
# 6     2 3          1      3       4
# 7     3 1          1      1       2
# 8     3 2          0      1       3
# 9     3 3          0      5       2
#10     4 1          0      1       4
# … with 20 more rows

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

重塑R中的数据(宽->长)

来自分类Dev

使用多个变量作为measure.vars将数据重塑为长格式

来自分类Dev

将长面板数据重塑为宽,其中数据在 ID 中不唯一

来自分类Dev

将数据从长格式重塑为宽格式 - 不止一个变量

来自分类Dev

将R中的数据帧重塑为宽格式

来自分类Dev

将长数据框重塑为多列宽

来自分类Dev

将宽数据帧重塑为长格式

来自分类Dev

如何使用多列将宽数据集重塑为长数据集?

来自分类Dev

如何将宽连续数据重塑为长分类数据?

来自分类Dev

R:使用reshape2将数据帧重塑为长数据格式

来自分类Dev

将数据重塑为宽格式

来自分类Dev

如何在R中将宽嵌套数据重塑为长格式?

来自分类Dev

如何在Stata中重塑长而宽的数据?

来自分类Dev

将R中的宽格式数据更改为长格式

来自分类Dev

重塑R中从长到宽NA的数据

来自分类Dev

将pandas宽列重塑为长

来自分类Dev

使用 data.table 将宽数据重塑为多行长数据

来自分类Dev

使用R将列中的分类数据重塑为行中的二进制数据

来自分类Dev

使用所有可能的组合将宽数据重整为长数据

来自分类Dev

如何使用日期将长数据集折叠为宽数据

来自分类Dev

将两列数据重塑为 r 长到宽的稀疏矩阵

来自分类Dev

R:将数据重塑为更长的格式,其中多个列共享名称中的模式

来自分类Dev

将数据框变量重塑为列表

来自分类Dev

将数据从长格式重组为宽格式

来自分类Dev

将列名中具有多个键的数据框从宽到长重塑

来自分类Dev

使用多组测量列将数据框重塑为长格式

来自分类Dev

使用冷凝柱将数据框从长到宽重塑

来自分类Dev

使用冷凝柱将数据框从长到宽重塑

来自分类Dev

将数据帧重塑为R中的列联表

Related 相关文章

热门标签

归档