首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算正负数,并在数据帧中按句点分组。

问计算正负数,并在数据帧中按句点分组。
EN

Stack Overflow用户
提问于 2017-07-20 09:01:19
回答 1查看 675关注 0票数 1

我有一个365天的数据集,其中分别包含一个温度值。我要分析包含正温度和负温度的天数。所以我想数数一段时间的天数,直到温度降到0为止。我已经建立了一个跟踪代数符号的列,但是现在我想增加另一个列,它跟踪正数和负数,这样我就可以group_by每段时间,并计算消耗的平均值、最小值、最大值等等。我目前还不知道如何在一幅图中画出结果,但也许你有一个想法。

代码语言:javascript
复制
         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数据。

代码语言:javascript
复制
         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

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-20 09:04:14

使用dplyr,我们可以通过

代码语言:javascript
复制
library(dplyr)
df1 %>% 
   mutate(Period = inverse.rle(within.list(rle(Sign), values <- seq_along(values))))

或者我们可以使用来自data.table的data.table

代码语言:javascript
复制
library(data.table)
setDT(df1)[, Period := rleid(Sign)]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45210068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档