【发布时间】:2014-08-10 01:39:26
【问题描述】:
我使用 R 中的 聚合函数 将我的数据条目从 90k 减少到 1800。
a=test$ID
b=test$Date
c=test$Value
d=test$Value1
sumA=aggregate(c, by=list(Date=b,Id=a), FUN=sum)
sumB=aggregate(d, by=list(Date=b,Id=a), FUN=sum)
final[1]=sumA[1],final[2]=sumA[2]
final[3]=sumA[3]/sumB[3]
现在我有 一个月内 20 个不同日期的数据,每天有接近 90 个不同的 ID,所以它在决赛桌中大约有 1800 个条目强> .
我的问题是我想进一步向下聚合并找到每个日期的 final[3] 的最大值,这样我就只剩下 20 个值了。
简单来说—— 有20天。 每天有 90 个值对应 90 个 id 我想为每一天找到这 90 个值中的最大值。 所以最后我会在 20 天内只剩下 20 个值。
现在聚合函数在这里不能使用函数 'max' 而不是 sum
Date ID Value Value1
1 A 20 10
1 A 25 5
1 B 50 5
1 B 50 5
1 C 25 25
1 C 35 5
2 A 30 10
2 A 25 45
2 B 40 10
2 B 40 30
这是数据
现在通过使用聚合函数,我得到了最终表格
Date ID x
1 A 45/15=3
1 B 100/10=10
1 c 60/30=2
2 A 55/55=1
2 B 80/40=2
现在我想要日期 1 和 2 的最大值
Date max- Value
1 10
2 2
【问题讨论】:
-
如果你提供一个小例子来检查问题会更好。
-
刚刚使用您的数据集更新了解决方案。请检查。
-
你能告诉我应该如何在聚合函数中使用 Dput 吗?我通过 dput 读取了文件,但它抛出了一个错误。 terms.formula(formula, data = data) 中的错误:'data' 参数类型错误
-
您可以
dput结果。例如dput(res1)。您可以使用read.table或read.csv读取文件。一旦你阅读了文件。例如dat <- read.table("file.txt",sep="", header=T)你可以dput(head(dat))看看命令是否有效。 -
res1
标签: r