gpt4 book ai didi

r - 聚合每个类和每个 ID 的一个变量的值

转载 作者:行者123 更新时间:2023-12-04 11:43:23 24 4
gpt4 key购买 nike

我有以下数据框:

id <- c(1,1,1,1,1,2,2,2,2)
spent <- c(10,10,20,10,10,5,5,5,20)
period <- c("f","c","c","v","v","f","c","c","v")
mean.spent <- c(10,15,15,10,10,5,5,5,20)
df <- data.frame(id,spent,period,mean.spent)

我想要的是汇总每个 Id 在每个时间段内花费的平均数,如下所示:

id  f  c  v    
1 10 15 10
2 5 5 20

你能帮我做这个吗?

最佳答案

使用 xtabs()aggregate() 如下:

df <- data.frame(id = c(1,1,1,1,1,2,2,2,2),
spent = c(10,10,20,10,10,5,5,5,20),
period = c("f","c","c","v","v","f","c","c","v"),
mean.spent = c(10,15,15,10,10,5,5,5,20))

xtabs(spent ~ id + period, aggregate(spent ~ id + period, df, mean))
# period
# id c f v
# 1 15 10 10
# 2 5 5 20

aggregate 计算每组的平均值(按“id”和“period”分组),xtabs 转换为这种更宽的格式。

以下是如何将其变成data.frame:

temp1 <- xtabs(spent ~ id + period, 
aggregate(spent ~ id + period, df, mean))
data.frame(id = dimnames(temp1)$id, as.data.frame.matrix(temp1))
# id c f v
# 1 1 15 10 10
# 2 2 5 5 20

更新:更直接的方法

我总是忘记 tapply,但这个例子是一个很好的选择,方便的时候使用。

tapply(df$spent, list(df$id, df$period), mean)
# c f v
# 1 15 10 10
# 2 5 5 20

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

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