r - 根据单独的链接数据框中的变量对数据框行进行分组
问题描述
假设我有两个数据框,一个包含环境数据 ( env.df
) 和另一个物种出现 ( species.df
),两者都具有相同的行名。我想species.df
根据 中的列(年份)的值对中的行进行分组env.df
,然后分别计算每年的统计数据。
env.df:
Site Year
A2015 A 2015
A2016 A 2016
A2017 A 2017
B2015 B 2015
B2016 B 2016
B2017 B 2017
species.df:
Species1 Species 2 Species 3
A2015 1 1 1
A2016 0 0 1
A2017 0 0 1
B2015 1 0 1
B2016 1 1 1
B2017 1 1 0
我不想再添加任何列,species.df
因为我需要使用的统计函数只能处理存在-不存在的按物种样本数据集。我知道如何分别从每年中选择样本species.df[env.df$Year== '2015',]
——等等——但我可以使用每年重复的一行代码来完成。我只能让dplyr
group_by 函数工作,env.df
不知道如何将其扩展到链接的 species.df
非常感谢
解决方案
你想要这样的东西吗?
lapply(
with(env.df, split(row.names(env.df), Year)),
function(k) species.df[k, ]
)
给
$`2015`
Species1 Species2 Species3
A2015 1 1 1
B2015 1 0 1
$`2016`
Species1 Species2 Species3
A2016 0 0 1
B2016 1 1 1
$`2017`
Species1 Species2 Species3
A2017 0 0 1
B2017 1 1 0
或者
split(
cbind(
env.df,
species.df[match(row.names(species.df), row.names(env.df)), ]
),
env.df$Year
)
这使
$`2015`
Site Year Species1 Species2 Species3
A2015 A 2015 1 1 1
B2015 B 2015 1 0 1
$`2016`
Site Year Species1 Species2 Species3
A2016 A 2016 0 0 1
B2016 B 2016 1 1 1
$`2017`
Site Year Species1 Species2 Species3
A2017 A 2017 0 0 1
B2017 B 2017 1 1 0
推荐阅读
- error-handling - 从迭代器收集所有错误的惯用方法
- git - 错误:BitBucket 后端需要后端配置中的“repo”
- wpf - 从用户控件到视图模型的绑定按钮无法按预期工作
- android - 制作浮点数的多维数组列表的副本
- node.js - 当都安装在 kubernetes 中时,如何在节点 js 中使用用户 jaeger?
- php - 无法通过 ssl 将 Laravel 应用程序连接到托管在 Azzure 上的数据库
- mysql - 十月CMS | 在 Models/Model_Name/fields.yaml 中,当我选择的列为空时,如何使用 select: 连接但删除字符
- android - 为什么小米红米 Note 6 Pro 不支持 ARCore?
- java - 我如何按顺序简化方向数组 {"south", "east"} 等?
- sql - 如何对多行的列值求和?