首页 > 解决方案 > 转换 R 中的格式(大量数据)

问题描述

我仍然是 R 的新用户,我知道将宽格式转换为长格式有很多问题。但是,我没有得到我想要的结果。我尝试使用 reshape、tidyr,但是,我仍然没有得到我想要的结果。

我的数据如下所示(它只是 N 的一部分)

     i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 i12 i13 i14 i15 i16 i17 i18 i19 i20 i21 i22 i23 i24 i25 i26 i27
207    0  1  0  0  1  0  0  1  0   0   0   1   0   0   1   0   1   0   0   1   1   1   0   0   0   0   1
334    0  0  0  0  0  0  0  0  0   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   1
344    0  1  1  0  0  1  0  0  0   1   0   0   1   0   1   0   1   1   0   1   0   1   1   1   0   0   1
432    1  0  1  1  0  0  0  0  0   1   0   1   0   1   1   0   1   1   0   1   1   0   0   0   0   1   1
616    0  1  1  1  1  0  0  0  0   0   0   1   0   1   1   0   0   1   1   0   0   0   0   0   0   1   1
667    1  0  0  0  0  0  0  0  0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0

我的理想数据集

0 207 i1  => the observation of the 207th student at the first item. 
 1 207 i2
 0 207 i3

. . 有人可以帮我编码吗?先感谢您。

标签: r

解决方案


一种选择是创建一个行名列,然后用于pivot_longer创建一个 3 列 data.frame,其中行名、列名和值作为三列

library(dplyr)
library(tidyr)
as.data.frame(m1) %>%
    rownames_to_column('rn') %>%
    pivot_longer(cols = -rn)

推荐阅读