【问题标题】:Creating dataframe using aggregate in R在 R 中使用聚合创建数据框
【发布时间】:2020-12-17 13:32:45
【问题描述】:

我正在尝试从现有数据框创建一个数据框,仅保留特定列,用于指定列值(我的数据中的一个物种)。本质上,我打算为我的数据集中的每个物种创建单独的数据框,详细说明它们登陆的站点,并保留用于运输的饲养剂 (RF.haul)。

我的代表是

QSC <- with(Dataframe[Dataframe$Species=="QSC", ], aggregate(number=RF.haul), by(Station=Station), FUN = sum, na.rm= TRUE)

我收到各种错误,主要是“找不到对象”RE 代码中的列标题,我确信这在 R 中是一件相对容易的事情 - 我只是无法理解它(我我是 R 新手!)

【问题讨论】:

  • 嗨!我很抱歉,但这不是一个代表。一个可重现的例子应该是可重现的。但如果没有 Dataframe,我将无法运行您的代码。

标签: r dataframe aggregate


【解决方案1】:

假设RF.haul 是一个数字列,考虑aggregate 中的公式样式,使用data 参数和cbind 重命名数字列。注意:添加na.action 参数以使用聚合公式样式处理缺失。 @Rorschach 的answer here

QSC <- aggregate(cbind(number = RF.haul) ~ Station, 
                 data = Dataframe[Dataframe$Species=="QSC", ], 
                 FUN=function(x) sum(x, na.rm=TRUE), 
                 na.action = na.pass)

要按物种 构建数据框列表,请将其添加到带有Station 的分组术语中,然后运行split 以获得命名的数据框列表。使用单个列表可以说是比全局环境中许多单独的数据框更好的选择。 @GregorThomas' canonical answer

agg_df <- aggregate(cbind(number = RF.haul) ~ Species + Station, 
                    data = Dataframe, 
                    FUN=function(x) sum(x, na.rm=TRUE), 
                    na.action = na.pass)

species_agg_dfs <- split(agg_df, agg_df$Species)

species_agg_dfs$QS
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    相关资源
    最近更新 更多