Создайте наблюдения с переменной нумерацией с определенными характеристиками R, используя tidyverse

#r #tidyverse

#r #tidyverse

Вопрос:

Я хотел бы присвоить число дням (событиям), значение которых было>0,36. Я хочу идентифицировать с уникальным номером любое событие, которое достигает этого правила (значение> 0,36), предпочтительно с использованием Tidyverse.

 
library(lubridate)
#create a df
date =as_date(ymd("2020-11-01"):ymd("2020-11-25"))
val = rnorm (25)

data = tibble(date, val)


 

Кто-нибудь может мне помочь?

Спасибо

Ответ №1:

Существует несколько способов выбора уникальных номеров для идентификации событий, для которых превышено пороговое значение. Кроме того, tidyverse может и не понадобиться — вот базовое решение R. В качестве уникального идентификатора используется индекс значения в val векторе, превышающего пороговое значение. Все остальные значения, которые ниже порогового значения 0,36, кодируются как 0.

 # (a) Initializing the 0s that later identify the non-events
data$flag <- rep(0, nrow(data)) 

# (b) identifying all values which exceed the threshold with the index
data$flag[which(val > 0.36)] <- which(val > 0.36) 
 

Вывод (на моей машине, случайным образом)

 > data
# A tibble: 25 x 3
   date           val  flag
   <date>       <dbl> <dbl>
 1 2020-11-01  0.0231     0
 2 2020-11-02 -0.413      0
 3 2020-11-03  0.240      0
 4 2020-11-04 -0.465      0
 5 2020-11-05 -0.929      0
 6 2020-11-06 -0.409      0
 7 2020-11-07  0.598      7
 8 2020-11-08  0.970      8
 9 2020-11-09  1.25       9
10 2020-11-10  0.244      0
# ... with 15 more rows