r - 重构数据框
问题描述
我的数据如下所示:
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 变量之间交替。
有什么建议么?
解决方案
一个选项使用gather
和spread
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
推荐阅读
- android - 如何制作自定义对话框
- blazor - Blazor - textarea 绑定到 oninput,但当文本区域的值使用 javascript 更改时不会被调用
- javascript - 如何使用 React Konva Image 将画布重新绘制到自身上?
- r - 如何在 R 中创建关系矩阵?
- php - 对于巨大的表格数据,使用 div 标签是否比使用 table tr 和 td 标签更快?
- javascript - 跨字符串数组映射以生成“选择”选项(反应/节点)
- reactjs - 仅在流星订阅完成后如何在反应组件构造函数中设置初始状态值
- java - 如何在此代码中处理 StringIndexOutOfBoundException
- google-apps-script - 从 Google 表格中读取电子邮件列表,但仅从每封假定的电子邮件中接收字符串“范围”
- regex - grep:尝试查找回文时反向引用无效