使用行值和聚合值创建 R 数据框列

问题描述

我有一些捕鱼数据。每行包含一个物种名称一个捕获值 (cpue) 和一些其他不相关的标识字段(年份、位置、深度等)。此代码生成具有正确结构的数据集:

# a sample dataset
set.seed(1337)
fish = rbind(
  data.frame(
    spp = "Flounder",cpue = rnorm(5,5,2)
  ),data.frame(
    spp = "Bass",15,1)
  ),data.frame(
    spp = "Cod",2,4)
  )
)

我正在尝试创建规范化的 cpue 列 cpue_norm。为此,我将以下函数应用于每个 cpue 值:

cpue_norm = (cpue - cpue_mean)/cpue_std

其中cpue_meancpue_std分别是cpue的均值和标准差。需要注意的是,我需要按每个物种执行此操作,即当我计算特定行的 cpue_norm 时,我需要计算 cpue_meancpue_std使用那个物种的cpue

问题是所有物种都在同一个数据集中。因此,对于每一行,我需要计算该物种 cpue 的均值和标准差,然后使用这些值来计算 cpue_norm。

我已经能够通过 tapply 取得一些进展:

calc_cpue_norm = function(l) {
  return((l - mean(l))/sd(l))
}

tapply(fish$cpue,fish$spp,calc_cpue_norm)

但是当我需要将这些值添加到数据框行时,我最终得到了列表。

有比我更了解 R 的人可以分享一些智慧吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)