gpt4 book ai didi

r - 计算每个主题的平均值并重复每个主题行的值

转载 作者:行者123 更新时间:2023-12-05 08:23:46 24 4
gpt4 key购买 nike

这是我第一次问关于堆栈溢出的问题。我曾尝试寻找答案,但无法准确找到我要寻找的内容。我希望有人能提供帮助。

我有一个庞大的 20416 观察数据集。基本上,我有 83 个科目,每个科目我都有几个观察结果。然而,每个受试者的观察次数并不相同(例如受试者 1 有 256 个观察,而受试者 2 只有 64 个观察)。我想添加一个额外的列,其中包含每个主题的观察值的平均值(观察值是阅读时间 (RT))。

我试过聚合函数:

aggregate (RT ~ su, data, mean)

此公式返回每个主题的正确平均值。但是我不能简单地执行以下操作:

data$mean <- aggregate (RT ~ su, data, mean)

当 R 返回这个错误时:

Error in $<-.data.frame(tmp, "mean", value = list(su = 1:83, RT = c(378.1328125, : replacement has 83 rows, data has 20416

我知道该公式缺少一个命令,该命令指定必须对所有受试者的行重复每个受试者的平均值(例如,如果受试者 1 有 256 行,则受试者 1 的平均值必须重复 256 行,如果受试者 2 有 64 行,受试者 2 的平均值必须重复 64 行,依此类推。

我如何在 R 中实现这一点?

最佳答案

data.table 语法很适合解决这类问题:

Dt[, Mean := mean(Value), by = "ID"][]
# ID Value Mean
# 1: a 0.05881156 0.004426491
# 2: a -0.04995858 0.004426491
# 3: b 0.64054432 0.038809830
# 4: b -0.56292466 0.038809830
# 5: c 0.44254622 0.099747707
# 6: c -0.10771992 0.099747707
# 7: c -0.03558318 0.099747707
# 8: d 0.56727423 0.532377247
# 9: d -0.60962095 0.532377247
# 10: d 1.13808538 0.532377247
# 11: d 1.03377033 0.532377247
# 12: e 1.38789640 0.568760936
# 13: e -0.57420308 0.568760936
# 14: e 0.89258949 0.568760936

当我们应用分组操作 (by = "ID") 时,data.table 将自动复制每个组的mean(Value) 适当的次数(避免您在上面遇到的错误)。


数据:

Dt <- data.table::data.table(
ID = sample(letters[1:5], size = 14, replace = TRUE),
Value = rnorm(14))[order(ID)]

关于r - 计算每个主题的平均值并重复每个主题行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34502278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com