Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中堆叠数据文件_R_Stack_Reshape_Reshape2_Melt - Fatal编程技术网

在R中堆叠数据文件

在R中堆叠数据文件,r,stack,reshape,reshape2,melt,R,Stack,Reshape,Reshape2,Melt,我希望在R中堆叠一个数据文件,并努力找到问题的解决方案。我有49个变量,分别是i1.1,i1.2,1.3,i1.4,i1.5,i1.6,i1.7。。。i7.6,i7.7。我想把所有的i1和一个新变量叠加在一起,这个新变量指定了变量名的最后一部分,这个变量是从i1.3中获取的,例如,如果这个值是从i1.3中获取的,那么这个新变量将包含值3。我在数据集中的另一件事是,我希望在数据集中保留一个id变量,以便我能够在以后的阶段合并一些额外的数据。是否有人有代码或想法,我如何能创造一些东西来做到这一点?我

我希望在R中堆叠一个数据文件,并努力找到问题的解决方案。我有49个变量,分别是i1.1,i1.2,1.3,i1.4,i1.5,i1.6,i1.7。。。i7.6,i7.7。我想把所有的i1和一个新变量叠加在一起,这个新变量指定了变量名的最后一部分,这个变量是从i1.3中获取的,例如,如果这个值是从i1.3中获取的,那么这个新变量将包含值3。我在数据集中的另一件事是,我希望在数据集中保留一个id变量,以便我能够在以后的阶段合并一些额外的数据。是否有人有代码或想法,我如何能创造一些东西来做到这一点?我真的被卡住了。欢迎任何建议。先谢谢你

    > #Call datafile
> testfile <-read_xlsx("C:/Users/rawlingsD/Documents/R Pre Analysis/Test stacking file.xlsx")
> head(testfile)
# A tibble: 3 x 50
  Respondent_ID  i1.1  i1.2  i1.3  i1.4  i1.5  i1.6  i1.7  i2.1  i2.2  i2.3  i2.4  i2.5  i2.6  i2.7  i3.1
          <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1           12.    3.    1.    7.    1.    7.    1.    5.    1.    7.    1.    1.    1.    9.    1.    8.
2           13.    2.    2.    2.    2.    2.    2.    2.    2.    2.    2.    2.    2.    2.    2.    2.
3           14.    3.    3.    3.    3.    3.    3.    3.    3.    3.    3.    3.    3.    3.    3.    3.
# ... with 34 more variables: i3.2 <dbl>, i3.3 <dbl>, i3.4 <dbl>, i3.5 <dbl>, i3.6 <dbl>, i3.7 <dbl>,
#   i4.1 <dbl>, i4.2 <dbl>, i4.3 <dbl>, i4.4 <dbl>, i4.5 <dbl>, i4.6 <dbl>, i4.7 <dbl>, i5.1 <dbl>,
#   i5.2 <dbl>, i5.3 <dbl>, i5.4 <dbl>, i5.5 <dbl>, i5.6 <dbl>, i5.7 <dbl>, i6.1 <dbl>, i6.2 <dbl>,
#   i6.3 <dbl>, i6.4 <dbl>, i6.5 <dbl>, i6.6 <dbl>, i6.7 <dbl>, i7.1 <dbl>, i7.2 <dbl>, i7.3 <dbl>,
#   i7.4 <dbl>, i7.5 <dbl>, i7.6 <dbl>, i7.7 <dbl>
这是我想要的数据集,最后是i1旁边的i2、i3等:

    > head(testfile_complete)
# A tibble: 6 x 3
  Respondent_ID image    i1
          <dbl> <dbl> <dbl>
1           12.    1.    3.
2           13.    1.    2.
3           14.    1.    3.
4           12.    2.    1.
5           13.    2.    2.
6           14.    2.    3.

如果您需要这些列,那么您可以这样做:我只为i1和i2做

reshape(dat1,varying = t(matrix(names(dat1[-1]),7)),idvar = "Respondent_ID",dir="long")
     Respondent_ID time i1.1 i2.1
12.1            12    1    3    1
13.1            13    1    2    2
14.1            14    1    3    3
12.2            12    2    1    7
13.2            13    2    2    2
14.2            14    2    3    3
12.3            12    3    7    1
13.3            13    3    2    2
14.3            14    3    3    3
12.4            12    4    1    1
13.4            13    4    2    2
14.4            14    4    3    3
12.5            12    5    7    1
13.5            13    5    2    2
14.5            14    5    3    3
12.6            12    6    1    9
13.6            13    6    2    2
14.6            14    6    3    3
12.7            12    7    5    1
13.7            13    7    2    2
14.7            14    7    3    3

可能重复:但问题是,首先要创建所有这些单独的变量。如果你把相关的项目放在一个列表中,这会容易得多。如果你有一些样本数据以及一个你期望最终数据是什么样的示例,回答这个问题会容易得多。同时,你可以看看tidyr软件包,看看这个类似问题的答案,而不需要具体的例子,你一定会让人们以不同的方式来解释这个问题。@GordonShumway,谢谢你的反馈。请查找修改后的数据集:这更有意义吗?谢谢!!!这很好,但是我如何将i2、i3、i4作为额外的堆叠变量分开呢这不是问题所问的。请稍等,这就是我所说的评论,这是我最后想要的数据集,i1旁边有i2、i3等:结果不是你想要的吗?最后的结果是什么?!非常感谢你:D太棒了!