gpt4 book ai didi

r - 通过 2 个变量聚合一个值

转载 作者:行者123 更新时间:2023-12-04 09:40:50 25 4
gpt4 key购买 nike

我有一个看起来像这样的数据框

AgeBracket    No of People     No of Jobs
18-25 2 5
18-25 2 2
26-34 4 6
35-44 4 0
26-34 2 3
35-44 1 7
45-54 3 2

由此我想聚合数据,使其看起来像下面这样:

AgeBracket     1Person    2People    3People    4People
18-25 0 3.5 0 0
26-34 0 3 0 6
35-44 7 0 0 0
45-54 0 0 2 0

Y 轴是年龄段,X 轴(第一行)是人数,而在单元格中显示的是该年龄段的平均工作数量和人数。

我认为这与聚合有关,但在任何网站上都找不到与此类似的内容。

最佳答案

这是一个使用 dcast 的 data.table 方法。

library(data.table)

setnames(dcast(df, AgeBracket ~ People, value.var="Jobs", fun.aggregate=mean, fill=0),
c("AgeBracket", paste0(sort(unique(df$People)), "Person")))[]

在这里,dcast 进行了广泛的 reshape ,将人员作为单独的变量。 fun.aggregate 用于计算 ageBracket-person 单元格中的平均工作数量。填充设置为 0。

setnames 用于重命名变量,因为默认值为整数值。最后的[]用于打印结果。

   AgeBracket 1Person 2Person 3Person 4Person
1: 18-25 0 3.5 0 0
2: 26-34 0 3.0 0 6
3: 35-44 7 0.0 0 0
4: 45-54 0 0.0 2 0

这可以分成两行,这可能更具可读性。

# reshape wide and calculate means
df.wide <- dcast(df, AgeBracket ~ People, value.var="Jobs", fun.aggregate=mean, fill=0)
# rename variables
setnames(df.wide, c("AgeBracket", paste0(names(df.wide)[-1], "Person")))

关于r - 通过 2 个变量聚合一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43870434/

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