我有一个365天的数据集,其中分别包含一个温度值。我要分析包含正温度和负温度的天数。所以我想数数一段时间的天数,直到温度降到0为止。我已经建立了一个跟踪代数符号的列,但是现在我想增加另一个列,它跟踪正数和负数,这样我就可以group_by每段时间,并计算消耗的平均值、最小值、最大值等等。我目前还不知道如何在一幅图中画出结果,但也许你有一个想法。
Time Consumption STABW_hour Min Max mean DeltaDaymean Sign
<dttm> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2014-01-01 1053.5 76.56046 964 1597.5 1159.804 -106.30411 -1
2 2014-01-02 1197.5 76.56046 964 1597.5 1159.804 37.69589 1
3 2014-01-03 1245.5 76.56046 964 1597.5 1159.804 85.69589 1
4 2014-01-04 1147.5 76.56046 964 1597.5 1159.804 -12.30411 -1
5 2014-01-05 1194.0 76.56046 964 1597.5 1159.804 34.19589 1
6 2014-01-06 1171.5 76.56046 964 1597.5 1159.804 11.69589 1
7 2014-01-07 1166.5 76.56046 964 1597.5 1159.804 6.69589 1
8 2014-01-08 1135.0 76.56046 964 1597.5 1159.804 -24.80411 -1
9 2014-01-09 1168.0 76.56046 964 1597.5 1159.804 8.19589 1
10 2014-01-10 1181.5 76.56046 964 1597.5 1159.804 21.69589 1结果应该是这样的,然后我就可以通过新的列来group_by数据。
Time Consumption STABW_hour Min Max mean DeltaDaymean Sign Period
<dttm> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2014-01-01 1053.5 76.56046 964 1597.5 1159.804 -106.30411 -1 1
2 2014-01-02 1197.5 76.56046 964 1597.5 1159.804 37.69589 1 2
3 2014-01-03 1245.5 76.56046 964 1597.5 1159.804 85.69589 1 2
4 2014-01-04 1147.5 76.56046 964 1597.5 1159.804 -12.30411 -1 3
5 2014-01-05 1194.0 76.56046 964 1597.5 1159.804 34.19589 1 4
6 2014-01-06 1171.5 76.56046 964 1597.5 1159.804 11.69589 1 4
7 2014-01-07 1166.5 76.56046 964 1597.5 1159.804 6.69589 1 4
8 2014-01-08 1135.0 76.56046 964 1597.5 1159.804 -24.80411 -1 5
9 2014-01-09 1168.0 76.56046 964 1597.5 1159.804 8.19589 1 6
10 2014-01-10 1181.5 76.56046 964 1597.5 1159.804 21.69589 1 6非常感谢!
发布于 2017-07-20 09:04:14
使用dplyr,我们可以通过
library(dplyr)
df1 %>%
mutate(Period = inverse.rle(within.list(rle(Sign), values <- seq_along(values))))或者我们可以使用来自data.table的data.table
library(data.table)
setDT(df1)[, Period := rleid(Sign)]https://stackoverflow.com/questions/45210068
复制相似问题