【问题标题】:Calculate mean of multiple rows using grouping variables [duplicate]使用分组变量计算多行的平均值
【发布时间】:2023-04-04 03:40:01
【问题描述】:

我正在尝试计算多个类的总体平均值。目前数据库是长格式的。我尝试选择第一个 ID 号(组变量 1),然后选择我感兴趣的虚拟变量(stem=1)类(分组变量 2),然后为收到的成绩计算一个 GPA 平均值(即词干 GPA 平均值)在感兴趣的课程中(stem=1)。

我在下面附上了一个数据库示例。总的来说,我正在尝试弄清楚如何计算每个学生的 GPA。

See example here

我曾尝试使用 library(psych)、describeBy(data, dataset$id, dataset$stem),但无济于事。有什么建议吗?

【问题讨论】:

  • easy base R,尝试help('aggregate')让你开始..
  • 除了aggregate?ave 也可能有用。

标签: r plyr psych


【解决方案1】:

对于这些操作,我更喜欢 dplyr 包。试试例如

 df %>% group_by(class) %>% summarise(mean_class=mean(class))

例如,使用mtcars 数据集:

 library(dplyr)
 mtcars %>% group_by(cyl) %>% summarise(mean_disp = mean(disp))

将根据分组变量cyl为您提供disp的所有方法。

【讨论】:

  • 谢谢!你能澄清 %>% 的含义吗?谢谢!
  • 也就是所谓的pipe-operator。它接受左边的任何东西,并将其作为右边的任何东西的论据。例如,mtcars %>% group_by(cyl) 应该读作“取数据集mtcars,然后将group 按循环大小计算,然后……它等效于命令group_by(mtcars, cyl),因为group_by 的第一个参数是一个数据帧.
  • 一般来说,这个问题属于split-apply-combine 主题。如果你用谷歌搜索这个,你会发现更多的方法来完成上述操作。此外,您似乎对 stackoverflow 很陌生,没关系,我自己也去过那里。 ;) 只是想说,通常建议在此处发布时发布带有所需输出的minimal reproducable example(谷歌搜索)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-28
  • 1970-01-01
  • 2021-07-07
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
相关资源
最近更新 更多