考虑显示用尺寸为每个治疗一起用于雄性和雌性的控制结果和两个实验处理的数据帧:R:由为特定的元素创建的列重塑数据帧(控制处理)
library(tidyverse)
mydf <- data_frame(treatment = c('ctrl','low','high','ctrl','low','high'),
gender = c('male','male','male','female','female','female'),
size = c(10,20,30,10,20,30),
result = c(0.11, 0.32, 0.25, 0.15, 0.38, 0.55))
treatment gender size results
ctrl male 10 0.11
low male 20 0.32
high male 30 0.25
ctrl female 10 0.15
low female 20 0.35
high female 30 0.55
要比较并排实验处理一侧的控制,我想重塑数据框如下:
treatment gender ctrl_size size ctrl_result result
low female 10 20 0.15 0.38
high female 10 30 0.15 0.55
low male 10 20 0.11 0.32
high male 10 30 0.11 0.25
我下面的作品的尝试,但似乎麻烦我,因为它把它们合并到之前创建的辅助数据帧最后一个:
mydf_result <- mydf %>%
select(-size) %>%
spread(treatment, result) %>%
gather(treatment, result, c(low, high)) %>%
rename(ctrl_result = ctrl)
mydf_size <- mydf %>%
select(-result) %>%
spread(treatment, size) %>%
gather(treatment, size, c(low, high)) %>%
rename(ctrl_size = ctrl)
mydf_final <-
full_join(mydf_result, mydf_size, by = c('treatment', 'gender')) %>%
select(treatment, gender, ctrl_size, size, ctrl_result, result) %>%
arrange(gender)
# A tibble: 4 × 6
treatment gender ctrl_size size ctrl_result result
<chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 low female 10 20 0.15 0.38
2 high female 10 30 0.15 0.55
3 low male 10 20 0.11 0.32
4 high male 10 30 0.11 0.25
以上可以在一个管道内实现吗?
难道我们需要知道'mydf'中的哪些观察结果来自同一个人能够做到这一点? – Joe
谢谢@Joe。我看到一个'治疗'列丢失,并会纠正它。 – Irakli