r - 将行和列标题作为变量包含在 R 中的数据集中
问题描述
我有一组数据,其中实验室测试类型作为行名,日期作为列名。我想转换此表,以便名称中的每个值都有实验室测试和日期。例如:
2017-01-01 2017-01-15
calcium 80 91
glucose 67 69
Neutrophils 3500 3812
Platlets 391653 370108
Lymphocytes 1839 2008
我想将此表转换为以下内容:
calcium 2017-01-01 80
glucose 2017-01-01 67
neutrophils 2017-01-01 3500
platlets 2017-01-01 391653
lymphocytes 2017-01-01 1839
calcium 2017-01-15 91
glucose 2017-01-15 69
neutrophils 2017-01-15 3812
platlets 2017-01-15 370108
lymphocytes 2017-01-15 2008
有 100 多个日期和 50 多个测试,因此手动完成这将花费太长时间。有谁知道可以在线执行此操作的功能或工具?
解决方案
这是一个tidyverse
解决方案。首先,我创建数据框。
# Create data frame
df <- read.table(text = " 2017-01-01 2017-01-15
calcium 80 91
glucose 67 69
Neutrophils 3500 3812
Platlets 391653 370108
Lymphocytes 1839 2008", header = TRUE, row.names = 1)
这在列名中引入了X
s,我将在稍后处理。我rownames_to_column
习惯将行名转换为一列,gather
以日期为标题的列从宽格式变为长格式,然后修复日期格式。
df %>%
rownames_to_column() %>%
gather(var, value, -rowname) %>%
mutate(var = gsub("X", "", var),
var = gsub("\\.", "-", var))
# rowname var value
# 1 calcium 2017-01-01 80
# 2 glucose 2017-01-01 67
# 3 Neutrophils 2017-01-01 3500
# 4 Platlets 2017-01-01 391653
# 5 Lymphocytes 2017-01-01 1839
# 6 calcium 2017-01-15 91
# 7 glucose 2017-01-15 69
# 8 Neutrophils 2017-01-15 3812
# 9 Platlets 2017-01-15 370108
# 10 Lymphocytes 2017-01-15 2008
推荐阅读
- salesforce - 为什么 SalesForce on before delete 触发器在处理之前删除记录?
- twig - 具有重复循环的不均匀画廊
- typescript - 解决错误:作为解析器 ESLint 加载的带有无效接口的打字稿
- fortify - Fortify SSC - 通过 REST API 生成报告
- c - 如何解决规则 8.7 MISRA-C?
- php - 非默认命名空间(LARAVEL 8)中的可调用控制器 - 错误
- ceph - 监视守护程序正在运行但不在仲裁中
- google-drive-api - 有没有办法使用 colab 直接将视频从谷歌驱动器批量移动/复制到 YouTube?
- node.js - 带有文件更改问题的 Angular 库编译
- python - 当值超出范围时,在二维数组中显示错误的轴