【问题标题】:How to count a numeric variable then create a new ordinal count variable by unique identifier如何计算一个数字变量然后通过唯一标识符创建一个新的序数计数变量
【发布时间】:2019-09-18 01:57:47
【问题描述】:

我有每周的数据,我想按所有参与者的一周为研究总结这些数据。

例如,record_idw1 上有一个rem_avg,在w2 上有一个rem_avg,等等。

我的数据集在下面。变量record_id 是唯一标识符,week 是数据来自年份中哪一周的数字指标,rem_avg 是平均睡眠值。我还有一个未显示的timestamp 变量,我使用lubridate::week() 来获取week 变量。

head(awake_sensor, 20)
# A tibble: 20 x 3
# Groups:   record_id [4]
   record_id  week rem_avg 
   <chr>     <dbl>   <dbl>     
 1 10            2   0.267   
 2 10            3   0.352   
 3 10            4   0.256   
 8 11            9   0.162   
 9 11           10   0.168   
10 11           11   0.169   
11 11           12   0.262   
12 11           13   0.333   
13 11           14   0.18   
14 12            3   0.207   
15 12            4   0.24   
19 13            9   0.369  
20 13           10   0.464  

理想情况下,当我完成后,它会看起来像这样,week_indicator 表示数据来自哪一周:

   record_id  week rem_avg   week_indicator
   <chr>     <dbl>   <dbl>   <chr>  
 1 10            2   0.267     1
 2 10            3   0.352     2
 3 10            4   0.256     3
 8 11            9   0.162     1
 9 11           10   0.168     2
10 11           11   0.169     3
11 11           12   0.262     4
12 11           13   0.333     5
13 11           14   0.18      6
14 12            3   0.207     1
15 12            4   0.24      2
19 13            9   0.369     1
20 13           10   0.464     2

【问题讨论】:

  • 谢谢,解决方案比我尝试的要简单得多。

标签: r time-series


【解决方案1】:

一种选择是按“record_identifier”分组并将“week_indicator”创建为row_number()

library(dplyr)
df1 %>%
   group_by(record_identifier) %>%
   mutate(week_indicator = row_number())

或者使用data.table中的rowid,可以跳过group_by直接创建列

library(data.table)
df %>%
   mutate(week_indicator = rowid(record_identifier))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多