#r #economics
#r #экономика
Вопрос:
Example:
FIPS Date Counts
1001 Jan_22 0
1003 Jan_22 1
1004 Jan_22 0
1001 Jan_23 1
1003 Jan_23 5
1004 Jan_23 0
1001 Jan_24 6
1003 Jan_24 10
1004 Jan_24 1
1001 Jan_25 8
1003 Jan_25 12
1004 Jan_25 3
1001 April_1 20
1003 April_1 60
1004. April_1 50
Result:
FIPS Date Counts DaysSinceFirst
1001 Jan_23 1 98
1003 Jan_22 1 99
1004 Jan_24 1 97
Я пытаюсь найти количество дней с момента 1-го случая Covid-19 в разных округах Соединенных Штатов. Мне нужно найти первое вхождение 1 случая, подтвержденного в этом округе, а затем заставить R сообщить мне для каждого кода FIPS, на какую дату это было в первый день, когда это было подтверждено для 1 случая. Я делаю все 3141 округ. Даты идут от Jan_22 до April_30.
Я использовал
data_long %>%
filter(Counts > 0) %>%
group_by(FIPS) %>%
slice(1L)
чтобы получить
FIPS Date Counts
1001 Jan_23 1
1003 Jan_22 1
1004 Jan_24 1
Но мне все еще нужно количество дней с момента первого подтвержденного обращения.
Ответ №1:
Вы можете получить разницу между каждой датой и 30 апреля, а затем применить оставшуюся часть кода.
library(dplyr)
last_date <- as.Date('2020-04-30')
df %>%
mutate(Date = lubridate::mdy(paste(Date, 2020,sep = '_')),
DaysSinceFirst = as.numeric(last_date - Date)) %>%
#If the last date needs to be taken from the data.
#DaysSinceFirst = as.numeric(max(last_date) - Date)) %>%
filter(Counts > 0) %>%
group_by(FIPS) %>%
slice(1L)
# FIPS Date Counts DaysSinceFirst
# <int> <date> <int> <dbl>
#1 1001 2020-01-23 1 98
#2 1003 2020-01-22 1 99
#3 1004 2020-01-24 1 97
Ответ №2:
Работает ли это:
library(dplyr)
df %>% mutate(date = paste('2020',Date, sep = '_')) %>% filter(Counts > 0) %>%
mutate(date = lubridate::ymd(date)) %>% arrange(FIPS,date) %>% group_by(FIPS) %>% filter(row_number() == 1) %>%
mutate(DaysSinceFirst = difftime(lubridate::ymd('2020-04-30'), date, units = 'days'))
# A tibble: 3 x 5
# Groups: FIPS [3]
FIPS Date Counts date DaysSinceFirst
<dbl> <chr> <dbl> <date> <drtn>
1 1001 Jan_23 1 2020-01-23 98 days
2 1003 Jan_22 1 2020-01-22 99 days
3 1004 Jan_24 1 2020-01-24 97 days