r - 根据分组变量的级别拆分数据帧的一个变量值
问题描述
如何根据另一个分组变量的级别将一个变量值拆分为数据框的列?
假设我有一个如下所示的数据框
Site Species dbh
1 sp1 2.8
1 sp2 2.2
2 sp1 4.0
2 sp2 1.5
3 sp1 3.9
3 sp2 2.5
我想得到如下输出,其中分组变量(物种)的级别成为数据框的列,dbh 值作为分组变量每个级别的值。
Site sp1 sp2
1 2.8 2.2
2 4.0 1.5
3 3.9 2.5
我将感谢您的宝贵建议。
问候,
法尔汉
解决方案
这被称为“重塑”或“枢轴”。有数百个教程和关于它的 SO 问题。
dat <- read.table(header = TRUE, text = "
Site Species dbh
1 sp1 2.8
1 sp2 2.2
2 sp1 4.0
2 sp2 1.5
3 sp1 3.9
3 sp2 2.5")
与tidyverse
:
library(tidyr)
dat %>% pivot_wider(values_from = "dbh", names_from = "Species")
#> # A tibble: 3 x 3
#> Site sp1 sp2
#> <int> <dbl> <dbl>
#> 1 1 2.8 2.2
#> 2 2 4 1.5
#> 3 3 3.9 2.5
与data.table
:
library(data.table)
setDT(dat)
dcast(dat, Site ~ Species)
#> Using 'dbh' as value column. Use 'value.var' to override
#> Site sp1 sp2
#> 1: 1 2.8 2.2
#> 2: 2 4.0 1.5
#> 3: 3 3.9 2.5
推荐阅读
- javascript - 如何将图像对齐到网格。(我想制作一个带有图片的产品列表,点击后它们链接到相应的页面)
- ubuntu-server - 如何在 Ubuntu 服务器上使用多个 NoIP 帐户设置 NoIP 服务
- c - return 语句不会在 c 中执行
- javascript - 将纯文本字符串格式化为对齐的两列
- javascript - 如何在提交前测试 es6 导入的有效性
- spring-boot - 新创建的 Spring boot starter 项目启动时抛出 ClassNotFoundException
- mongodb - helm 在部署 mongodb 时忽略设置值
- ssis - SSIS 在解决缺少新行的数据负载维护历史记录方面的最佳实践是什么?
- javascript - Mongoose / mongoDb 搜索我需要未填充属性值的地方
- javascript - (课程预订功能)在用户点击 HTML 表单提交之前提示他们选择了周末日期