首页 > 解决方案 > 重构数据框

问题描述

我的数据如下所示:

cat1 <- c("A","A","B","B")
gender <- c("male","female","male","female")
mean <- c(1,2,3,4)
sd <-c(5,6,7,8)
data <- data.frame("cat1"=cat1,"gender"=gender, "mean"=mean, "sd"=sd)


> data
  cat1 gender mean sd
1    A   male    1  5
2    A female    2  6
3    B   male    3  7
4    B female    4  8

我想将表格的格式更改为下面的格式。

> data
  cat1    score    male    female
1    A    mean      1      2
2    A    sd        5      6
3    B    mean      3      4
4    B    sd        7      8

基本上,我在 score 和 cat2 变量之间交替。

有什么建议么?

标签: rdataframereshapetranspose

解决方案


一个选项使用gatherspread

library(dplyr)
library(tidyr)

data %>%
  gather(score, value, -cat1, -gender) %>%
  spread(gender, value)

#  cat1 score female male
#1    A  mean      2    1
#2    A    sd      6    5
#3    B  mean      4    3
#4    B    sd      8    7

推荐阅读