【发布时间】:2012-10-26 18:38:39
【问题描述】:
我有一个这样的数据框:
Date Process Duration
1/1/2012 xnit 10
1/1/2012 xnit 15
1/1/2012 xnit 20
1/2/2012 telnet 80
1/2/2012 telnet 50
1/2/2012 telnet 40
8/1/2012 ftp 3
8/1/2012 ftp 11
8/1/2012 ftp 12
转换成x后
我可以这样计算每个工作的平均值:
x<-x[, mean := mean(Duration), by = Process]
我喜欢将特定日期的持续时间与平均值进行比较。我试过这个:
x<-x[, Aug1 := subset(x, Date==as.Date(c("2012-08-01")))$Duration, by = Process]
一旦我得到这个值,我打算将 Aug1 列与每个进程的平均值进行比较,以查看异常值。但是,此命令需要很长时间才能完成。有没有更好的方法来做到这一点?
【问题讨论】:
-
您能否编辑您的问题(和标签)以澄清这是否实际上是 data.table ?
-
您打算如何比较?你期望最后一行代码返回什么?我想您可能想添加一个月列然后使用
by=month,但我真的不明白您希望做什么。您能否包括您的最后一行代码的预期输出以及您最终想要的结果? -
使用
:=时无需重新分配给x,因为这是通过引用分配给x。我也不会将subset或$与data.tables 一起使用,因为这会避免所有data.table的效率。
标签: r dataframe data.table