r获取序列的第二个示例

xt0899hw  于 2022-12-27  发布在  其他
关注(0)|答案(2)|浏览(122)
~SUBJID, ~TP.DATE, ~TPR_ar,
    '2617001', '2019-04-11', 'Undefined',
    '2617001', '2019-07-09', 'PD',       
    '2617001', '2019-09-07', 'PD',       
    '2617001', '2019-10-19', 'PD',      
    '2617001', '2019-11-12', 'PD',      
    '2617001', '2020-01-13', 'PR',      
    '2617001', '2020-02-24', 'PD',
    '2617001', '2020-03-24', 'PD',
)

你好,stackoverflow!我想得到上面数据的具体日期。你可以看到,对于上面的数据,TPR_ar的序列是:“未定义”,“PD”,“PR”,“PD”。我想做的是获得PD的第二个-第一个日期(2020-02-24)。提前感谢!

qfe3c7zg

qfe3c7zg1#

我们可以使用rlerleid对相邻的相似元素进行分组

library(dplyr)
library(data.table)
df1 %>%
   group_by(grp = rleid(TPR_ar)) %>% 
   filter(TPR_ar == 'PD', row_number() == 1) %>% 
   ungroup %>%
   slice(2) %>%
   pull(TP.DATE)
[1] "2020-02-24"

如果按“SUBJID”分组

df1 %>%
   group_by(SUBJID, grp = rleid(TPR_ar)) %>% 
    filter(TPR_ar == 'PD', row_number() == 1) %>%
    group_by(SUBJID) %>% 
    slice(2) %>%
    pull(TP.DATE)
olhwl3o2

olhwl3o22#

下面是一个没有rleid的示例:

library(dplyr)

df %>% 
  group_by(x = cumsum(TPR_ar != lag(TPR_ar, def = first(TPR_ar)))+1) %>%
  slice(1) %>% 
  filter(TPR_ar == "PD") %>% 
  ungroup() %>% 
  slice(2) %>% 
  pull(TP.DATE)
1] "2020-02-24"

相关问题