【发布时间】:2016-01-14 13:51:44
【问题描述】:
我正在尝试创建一个函数,该函数将采用几个参数并返回总平均每小时回报。我的数据集如下所示:
Location Time units
1 Columbus 3:35 12
2 Columbus 3:58 199
3 Chicago 6:10 -45
4 Chicago 6:19 87
5 Detroit 12:05 -200
6 Detroit 0:32 11
我想要返回的是
Location Time units unitsph
Columbus 7:33 211 27.9
Chicago 12:29 42 3.4
Detroit 12:37 -189 -15.1
同时还保留其他项目
基本上是生产的总单位数和每小时的单位数。
我试过了
thing <- time %>% group_by(Location) %>% summarize(sum(units))
返回位置和总单位,但不返回每小时单位。然后我搬到了
thing <- time %>% group_by(Location) %>% summarize(sum(units)) %>% summarize(sum(Time))
返回的
Error in eval(expr, envir, enclos) : object 'Time' not found
我也尝试过变异,但没有效果:
fin <- mutate(time, as.numeric(sum(Time))/as.numeric(sum(units)))
Error in Summary.factor(c(118L, 131L, 174L, 178L, 57L), na.rm = FALSE) :
‘sum’ not meaningful for factors
非常感谢这里的任何帮助。我还有一些我想保留的其他列(它们是位置的地理编码等),但没有在此处列出。如果这很重要,我可以重新添加。
【问题讨论】:
-
Play.Time不是Time对于初学者。另外,你如何总结12:05像时间对象?它们是如何存储的? -
啊,是的,编辑的乐趣。 Play.Time 是实际变量,为了简单起见,我在问题中设置了时间。编辑以解决该问题。时间项目被存储为因素。它们是由 lubridate 生成的,但老实说我不记得我是如何生成它们的(已经改进了一段时间了)。
-
我想我的答案已经过时了。您可以将
dput(time)的输出添加到您的问题中,以使其更容易重现。此外,thing <- time %>% group_by(Location) %>% summarize(sum(units)) %>% summarize(sum(Time))行包含一个错误。请参阅下面的答案 -
dput(time) 获取:list(Location = structure(c(9L, 9L, 9L, 9L, 9L, 13L, 13L, 13L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L), .Label = c("Columbus", "Detroit", "Chicago"), class= "factor"), Time = structure(c(118L, 131L, 174L, 178L, 57L, 8L, 91L, 108L, 66L, 91L, 96L, 105L, 129L, 141L, 145L, 180L, 190L, 207L, 208L), .Label = c("0:01", "0:05", "0 :06" ), class= "因子")
-
注意:这里有很多列和行我删除了问题的实质。