将表1转换为表2。
我可以通过创建表1来解决第一部分。
library(tidyverse)
grp = c("A", "A", "B", "B")
sex = c("F", "M", "F", "M")
meanL = c(0.22, 0.47, 0.33, 0.55)
sdL = c(.11, .33, .11, .31)
meanR = c(.34, .57, .4, .65)
sdR = c(.08, .33, .07, .27)
data <- as.data.frame(cbind(grp, sex, meanL, sdL, meanR, sdR))
head(data)
我能做的最好的事情是将所有数据收集到两列中,一列包含变量,另一列包含值。
data2 <- gather(data, categories, meanL:sdR)
head(data2, n=30)
我目前正在努力的地方是为每个阅读标记性别。
答案 0 :(得分:0)
这是一个tidyverse
选项:
data %>%
gather(k, v, -grp, -sex) %>%
unite(k, sex, k, sep = ".") %>%
spread(k, v)
# grp F.meanL F.meanR F.sdL F.sdR M.meanL M.meanR M.sdL M.sdR
#1 A 0.22 0.34 0.11 0.08 0.47 0.57 0.33 0.33
#2 B 0.33 0.4 0.11 0.07 0.55 0.65 0.31 0.27
我建议逐行运行代码,以查看每个步骤的作用。简而言之,我们将数据从宽到长整形,合并列,然后再次从长到宽整形。