微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用行值和聚合值创建 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 举报,一经查实,本站将立刻删除。