我想知道是否有办法
DATA
重新格式化为我的
Desired_output
在下面
具体来说,对于每个唯一的
study
,我们粘在一起
pre
和
postNUMBER
一起,单独用于
T
和
C
.
ps.如果
学习
在里面
数据
,没有
之前
(仅由postNUMBER组成)或postNUMBER(仅由组成
之前
),我们只是将其排除在外(在这种情况下,
Jasmi
和
Zill
研究被排除在外)。
我尝试了以下操作,但没有成功:
DATA <- read.table(header=TRUE,text="
study year mT sdT nT mC sdC nC time
Al_Ajmi 2015 1.68 1.07 25 1.44 1.08 31 pre
Al_Ajmi 2015 7.4 2.22 25 1.08 1.12 31 post1
Al_Ajmi 2015 8.08 1.75 25 1.48 1.08 31 post2
Jasmi 2020 1.3 1 30 2 1 30 pre
Zill 2019 2 1 41 3 2 32 post1
Zill 2019 3 3 41 1 1 32 post2")
Desired_output <- read.table(header=T, text="
study year time group n mpre mpost sdpre sdpost
Al_Ajmi 2015 pre-post1 T 25 1.68 7.4 1.07 2.22
Al_Ajmi 2015 pre-post2 T 25 1.68 8.08 1.07 1.75
Al_Ajmi 2015 pre-post1 C 31 1.44 1.08 1.08 1.12
Al_Ajmi 2015 pre-post2 C 31 1.44 1.48 1.08 1.08
")
# I tried the following without success:
library(tidyverse)
dat8 <- DATA %>% pivot_longer(nT:sdC,
names_to = c(".value","group"),
names_pattern = "(n|m|sd)(T|C)")
output <-
left_join(filter(dat8, time !="pre"),
filter(dat8, time =="pre"),
by = c("study","group"),
suffix= c("post","pre") ) %>%
select(study:sdpost,npre:sdpre) %>%
rename_with(~str_remove(.,"post"), -c("mpost","sdpost")) %>%
mutate(time=recode(time, "post1"="pre-post1", "post2"="pre-post2")) %>%
arrange(study, group)