【发布时间】:2014-08-20 03:06:48
【问题描述】:
我有一个数值变量,称之为“Blah”。 Blah 在一天中以不同的时间间隔进行测量,并且一直在增加。我想找出每天 Blah 的第一次和最后一次观察之间的差异,并制作一张每天 Blah 增加总量的表格。
稍微复杂一点的是,如果 Blah 足够高,它将重置为非常低的数字。这总是以相同的(当前未知)数量和每天一次的最大速率发生。
一些可能很重要的细节:
Blah 也在不同的命名位置进行测量。我想要一个按位置统计的数据框。 :)
时间变量的格式为“mm/dd/yyyy hh:mm:ss”
这是我想出的总体大纲。我遇到的一个问题是我没有过多地使用 POSIXct 对象,也不知道如何获取这些值并实现这一点。
A<-first value of Day
B<-last value of Day
C<-Maximum value of Blah from a day where reset happens (last value before reset)
For (each Day)
For (each Location)
If A < B
Then
DayTotal = B-A
Else
DayTotal = (C-A)+B
编辑:
我这里有一些格式错误的数据。下面是正确的格式。
提前感谢您的帮助!
-迈克尔
另外,在 Blah 重置的那一天,A 将永远大于 B。
编辑 2 号
天哪,我是一个可怕的人。数据实际上是这样的
DESCRIPTION rawCount localDateTime
1 Arch Exit 33166 2014-05-23 07:55:05
2 Arch Exit 33167 2014-05-23 08:00:06
3 Arch Exit 33170 2014-05-23 08:10:06
4 Arch Exit 33173 2014-05-23 08:15:05
5 Arch Exit 33175 2014-05-23 08:20:05
6 Arch Exit 33178 2014-05-23 08:25:06
7 Northside 48073 2014-05-24 15:01:40
8 Northside 48119 2014-05-24 15:05:49
9 Northside 48167 2014-05-24 15:10:59
10 Northside 48237 2014-05-24 15:20:49
11 Northside 73 2014-05-24 15:25:59
12 Northside 350 2014-05-24 15:35:49
13 Northside 1430 2014-05-24 15:44:06
14 Northside 2554 2014-05-24 16:00:49
(假设上面的数据每天都是完整的)我希望结果看起来像
DESCRIPTION totalCount Date
Arch Exit 12 2014-05-23
Northside 2718 2014-05-23
另一个编辑
好的,所以使用下面的答案,我做了以下我认为可以做到的事情。
rawDiff 是一个已经存在的变量(在 excel 中完成....yikes), parse_date_time 是 Lubridridate 包中的一个函数,“Full”是我的数据,“localdate”是我想要的日期变量。
blahblah<-with(Full, tapply(rawDiff, list(parse_date_time(Full$localDate, "mdy"), DESCRIPTION), function(x) {
sum(x[x>=0])}))
NA 有一些奇怪之处,即使用单独的预制差异变量似乎有所帮助。另外,当它重置差异为负时,我只取了非负差异。
【问题讨论】:
-
您确实应该包含一些示例数据和该数据所需的输出。阅读how to make a great R reproducible example 获取提示和建议。
-
好的,我尝试根据您的要求进行编辑。一开始就应该这样做。我的坏哟。
-
老兄。停止更改您的问题并阅读提供的答案哟!我花了几秒钟来更改 @MrFlick 原始答案中的变量名称以反映您的新变量并得到您期望 G 的答案。
-
老兄!我没有改变问题只是数据是什么样的。 :)
-
@Michael,您似乎还没有回答这个问题。你能说明你仍然卡在哪里吗?
标签: r conditional posixct