Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.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_Longitudinal - Fatal编程技术网

R 如何将数据集操纵到新的数据框架中?

R 如何将数据集操纵到新的数据框架中?,r,longitudinal,R,Longitudinal,我的数据如下:1-pre 2-mid 3-post id<-c(1,2,3,4,5,6,7,8,9) type<-c(1,2,2,1,2,1,1,1,2) #is the factor level 1 and 2 k1<-c(30.7,20.3,3.4,22,11.6,29.5,15.4,2.7,2.1) k2<-c(13.4,11,1.4,9.6,17.3,27.1,9.3,5.3,4.7) k3<-c(1.2,10,4.7,2.6,13.4,14.8,8.8,

我的数据如下:1-pre 2-mid 3-post

id<-c(1,2,3,4,5,6,7,8,9)
type<-c(1,2,2,1,2,1,1,1,2)  #is the factor level 1 and 2
k1<-c(30.7,20.3,3.4,22,11.6,29.5,15.4,2.7,2.1)
k2<-c(13.4,11,1.4,9.6,17.3,27.1,9.3,5.3,4.7)
k3<-c(1.2,10,4.7,2.6,13.4,14.8,8.8,0.7,4.6)
m1<-c(12    ,12.6,  1.6,    6.2,    10.5,   8.6,    15.3,   1.5,    1.3)
m2<-c(6.6   ,10.5,  0.5,    2.7,    5.2,    8.5,    9.6,    0.6,    4.3)
m3<-c(2,11, 2.6,0.4,7.2,9.4,12.3,0.3,2)
df<-data.frame(type,k1,k2,k3,m1,m2,m3,id)
df[,1]<-as.factor(df[,1])
这是我使用的命令

dflong<-tidyr::gather(df,key=time, value=score, k1:k3,m1:m3)%>% arrange(id)
dflong%排列(id)

我想要一列表示周期(pre、mid、post),另一列表示m和k变量的值

在基数R中,您可以使用
重塑
函数,。通过指定可变列,即
2:7
,然后将可变列的分隔符指定为
“”
。如果列被命名为
k.1,k.2…
,那么分隔符应该是

  reshape(df,2:7,dir="long",sep="")

    type id time    k    m
1.1    1  1    1 30.7 12.0
2.1    2  2    1 20.3 12.6
3.1    2  3    1  3.4  1.6
4.1    1  4    1 22.0  6.2
5.1    2  5    1 11.6 10.5
6.1    1  6    1 29.5  8.6
7.1    1  7    1 15.4 15.3
8.1    1  8    1  2.7  1.5
9.1    2  9    1  2.1  1.3
1.2    1  1    2 13.4  6.6
2.2    2  2    2 11.0 10.5
3.2    2  3    2  1.4  0.5
4.2    1  4    2  9.6  2.7
5.2    2  5    2 17.3  5.2
6.2    1  6    2 27.1  8.5
7.2    1  7    2  9.3  9.6
8.2    1  8    2  5.3  0.6
9.2    2  9    2  4.7  4.3
1.3    1  1    3  1.2  2.0
2.3    2  2    3 10.0 11.0
3.3    2  3    3  4.7  2.6
4.3    1  4    3  2.6  0.4
5.3    2  5    3 13.4  7.2
6.3    1  6    3 14.8  9.4
7.3    1  7    3  8.8 12.3
8.3    1  8    3  0.7  0.3
9.3    2  9    3  4.6  2.0

Onyanbu的解决方案非常完美,但我想我应该尝试一下
tidyr
的新
pivot
功能:

库(tidyverse)
df%>%
再长一点(
cols=k1:m3,
名称_sep=1,
名称_to=c(“mk”,“time”)
) %>%
支点更宽(
id_cols=c(类型、id、时间),
名称_from=mk,
值\u from=值
)
#>#A tibble:27 x 5
#>类型id时间k m
#>        
#>  1 1         1 1      30.7  12  
#>  2 1         1 2      13.4   6.6
#>  3 1         1 3       1.2   2  
#>  4 2         2 1      20.3  12.6
#>  5 2         2 2      11    10.5
#>  6 2         2 3      10    11  
#>  7 2         3 1       3.4   1.6
#>  8 2         3 2       1.4   0.5
#>  9 2         3 3       4.7   2.6
#> 10 1         4 1      22     6.2
#> # ... 还有17排
数据:

id
  reshape(df,2:7,dir="long",sep="")

    type id time    k    m
1.1    1  1    1 30.7 12.0
2.1    2  2    1 20.3 12.6
3.1    2  3    1  3.4  1.6
4.1    1  4    1 22.0  6.2
5.1    2  5    1 11.6 10.5
6.1    1  6    1 29.5  8.6
7.1    1  7    1 15.4 15.3
8.1    1  8    1  2.7  1.5
9.1    2  9    1  2.1  1.3
1.2    1  1    2 13.4  6.6
2.2    2  2    2 11.0 10.5
3.2    2  3    2  1.4  0.5
4.2    1  4    2  9.6  2.7
5.2    2  5    2 17.3  5.2
6.2    1  6    2 27.1  8.5
7.2    1  7    2  9.3  9.6
8.2    1  8    2  5.3  0.6
9.2    2  9    2  4.7  4.3
1.3    1  1    3  1.2  2.0
2.3    2  2    3 10.0 11.0
3.3    2  3    3  4.7  2.6
4.3    1  4    3  2.6  0.4
5.3    2  5    3 13.4  7.2
6.3    1  6    3 14.8  9.4
7.3    1  7    3  8.8 12.3
8.3    1  8    3  0.7  0.3
9.3    2  9    3  4.6  2.0
id <- c(1, 2, 3, 4, 5, 6, 7, 8, 9)
type <- c(1, 2, 2, 1, 2, 1, 1, 1, 2) # is the factor level 1 and 2
k1 <- c(30.7, 20.3, 3.4, 22, 11.6, 29.5, 15.4, 2.7, 2.1)
k2 <- c(13.4, 11, 1.4, 9.6, 17.3, 27.1, 9.3, 5.3, 4.7)
k3 <- c(1.2, 10, 4.7, 2.6, 13.4, 14.8, 8.8, 0.7, 4.6)
m1 <- c(12, 12.6, 1.6, 6.2, 10.5, 8.6, 15.3, 1.5, 1.3)
m2 <- c(6.6, 10.5, 0.5, 2.7, 5.2, 8.5, 9.6, 0.6, 4.3)
m3 <- c(2, 11, 2.6, 0.4, 7.2, 9.4, 12.3, 0.3, 2)
df <- data.frame(type, k1, k2, k3, m1, m2, m3, id)
df[, 1] <- as.factor(df[, 1])