基本R重塑()与tidyverse

基本R重塑()与tidyverse,r,reshape,reshape2,tidyverse,R,Reshape,Reshape2,Tidyverse,最近,我四处寻找,想找到一种快速的方法,从包含患者数据的宽数据框中创建一个长数据框,每个患者有多个测量值(比如说,心率、血压和饱和度分数长达五天)。在谷歌搜索时,我曾期望从tidyverse和/或Reforme2软件包中找到许多解决方案。然而,我从base-R中实际发现 现在,我无法放弃尝试使用tidyverse和/或Reforme2中的一个或多个包来找到同样好的“一行线”。到目前为止,还没有这么好的结果,我希望得到一个提示。请注意,这个问题是关于一个漂亮/整洁、聪明的解决方案,而不是寻找实际的

最近,我四处寻找,想找到一种快速的方法,从包含患者数据的宽数据框中创建一个长数据框,每个患者有多个测量值(比如说,心率、血压和饱和度分数长达五天)。在谷歌搜索时,我曾期望从tidyverse和/或Reforme2软件包中找到许多解决方案。然而,我从base-R中实际发现

现在,我无法放弃尝试使用tidyverse和/或Reforme2中的一个或多个包来找到同样好的“一行线”。到目前为止,还没有这么好的结果,我希望得到一个提示。请注意,这个问题是关于一个漂亮/整洁、聪明的解决方案,而不是寻找实际的解决方案

链接帖子的数据:

id <- paste('x', "1.", 1:10, sep="")
set.seed(10)
DF <- data.frame(id, trt=sample(c('cnt', 'tr'), 10, T), work.T1=runif(10),
    play.T1=runif(10), talk.T1=runif(10), total.T1=runif(10),
    work.T2=runif(10), play.T2=runif(10), talk.T2=runif(10), 
    total.T2=runif(10))

id我不认为有一个只调用一个函数的tidyverse解决方案,但是一个好的解决方案也没有那么复杂。我们需要先聚集,然后分离时间和键,然后再将其重新展开

DF %>% 
    gather(key, val, -id, -trt) %>% 
    separate(key, c('key', 'time')) %>% 
    spread(key, val)

啊,就是这样,现在我意识到,通过移除ID为“cruft”的VAR,gather实际上将所有剩余的批次集中在一个标题下。然后可以将其分离出来。我一直在寻找一个已经指定了哪些列将放在哪个新列下的解决方案。
      id trt time       play       talk      total       work
1   x1.1  tr   T1 0.86472123 0.53559704 0.27548386 0.65165567
2   x1.1  tr   T2 0.03188816 0.07557029 0.86138244 0.35432806
3  x1.10 cnt   T1 0.35589774 0.50050323 0.80154700 0.83613414
4  x1.10 cnt   T2 0.21913855 0.20795168 0.17015172 0.50528560
5   x1.2 cnt   T1 0.61535242 0.09308813 0.22890394 0.56773775
6   x1.2 cnt   T2 0.11446759 0.53442678 0.46439198 0.93643254
7   x1.3 cnt   T1 0.77510990 0.16980304 0.01443391 0.11350898
8   x1.3 cnt   T2 0.46893548 0.64135658 0.22286743 0.24586639
9   x1.4  tr   T1 0.35556869 0.89983245 0.72896456 0.59592531
10  x1.4  tr   T2 0.39698674 0.52573932 0.62354960 0.47314146
11  x1.5 cnt   T1 0.40584997 0.42263761 0.24988047 0.35804998
12  x1.5 cnt   T2 0.83361919 0.03928139 0.20364770 0.19156087
13  x1.6 cnt   T1 0.70664691 0.74774647 0.16118328 0.42880942
14  x1.6 cnt   T2 0.76112174 0.54585984 0.01967341 0.58322197
15  x1.7 cnt   T1 0.83828767 0.82265258 0.01704265 0.05190332
16  x1.7 cnt   T2 0.57335645 0.37276310 0.79799301 0.45947319
17  x1.8 cnt   T1 0.23958913 0.95465365 0.48610035 0.26417767
18  x1.8 cnt   T2 0.44750805 0.96130241 0.27431890 0.46743405
19  x1.9  tr   T1 0.77077153 0.68544451 0.10290017 0.39879073
20  x1.9  tr   T2 0.08380201 0.25734157 0.16660910 0.39983256