R: Как изменить столбец и сгруппировать его

avatar
zher4883
9 августа 2021 в 02:15
44
1
0

Я не совсем уверен, как описать свою проблему, но я хотел бы провести анализ временных рядов данных о COVID-19. Ниже мой код

library(dplyr)
hospital=read.csv("https://raw.githubusercontent.com/MoH-Malaysia/covid19- 
public/main/epidemic/hospital.csv")
icu=read.csv("https://raw.githubusercontent.com/MoH-Malaysia/covid19- 
public/main/epidemic/icu.csv")
kv_hosp=hospital%>%
  filter(state %in% c("W.P. Kuala Lumpur","Selangor","W.P. Putrajaya"))%>%
  select(date,state,hosp_covid)
kv_icu=icu%>%
  filter(state %in% c("W.P. Kuala Lumpur","Selangor","W.P. Putrajaya"))%>%
  select(date,state,icu_covid)
kv_hosp1=mutate(kv_hosp,aggregated_state=state %in% c("W.P. Kuala Lumpur","Selangor","W.P. 
Putrajaya"))
kv_icu1=mutate(kv_icu,aggregated_state=state %in% c("W.P. Kuala Lumpur","Selangor","W.P. 
Putrajaya"))

Основываясь на приведенном выше коде, я выбрал W.P. Куала-Лумпур, Селангор и В.П. Штат Путраджайя и я хотели бы создать новую совокупность, поскольку вместе все эти 3 штата известны как долина Кланг. Также более целесообразно анализировать данные таким образом, поскольку они совместно используют ресурсы здравоохранения.

Кажется, когда я пытаюсь изменить столбец, конечным результатом будет новый столбец с именем aggregated_state со всеми значениями как TRUE. Каков правильный метод мутации в этом случае?

Источник
Amir Charkhi
9 августа 2021 в 02:20
0

Что вы хотите, чтобы ваш новый столбец aggregated_state имел данные? То, как вы это делаете, спрашивает, находится ли значение state в list состояний, которые вы предоставили, поэтому новый столбец будет всем True, поскольку вы уже отфильтровали, чтобы быть в list состояний . Я думаю, вам нужно указать, что вы хотите включить в измененный столбец, кроме проверки того, находится ли он в list.

zher4883
9 августа 2021 в 02:29
0

Я пытался создать агрегированное значение, известное как Klang Valley, чтобы агрегировать все 3 состояния, а также иметь значения hosp_covid и icu_covid для суммирования, чтобы у меня было наблюдение только для каждой даты.

Amir Charkhi
9 августа 2021 в 02:36
0

Вы пробовали: kv_hosp1=mutate(kv_hosp,aggregated_state="Klang Valley"))

Ответы (1)

avatar
Ronak Shah
9 августа 2021 в 02:37
1

Вы можете попробовать объединить значения этих трех состояний в одно (Klang Valley) и использовать group_by summarise для суммирования столбца hosp_covid.

library(dplyr)

kv_hosp <- hospital %>%
  mutate(state = ifelse(state %in% c("W.P. Kuala Lumpur","Selangor","W.P. Putrajaya"), 'Klang Valley', state)) %>%
  group_by(date, state) %>%
  summarise(hosp_covid = sum(hosp_covid), .groups = 'drop')

kv_hosp

# A tibble: 7,014 x 3
#   date       state           hosp_covid
#   <chr>      <chr>                <int>
# 1 2020-03-24 Johor                   18
# 2 2020-03-24 Kedah                   46
# 3 2020-03-24 Kelantan                78
# 4 2020-03-24 Klang Valley           331
# 5 2020-03-24 Melaka                  19
# 6 2020-03-24 Negeri Sembilan         90
# 7 2020-03-24 Pahang                  36
# 8 2020-03-24 Perak                   78
# 9 2020-03-24 Perlis                   7
#10 2020-03-24 Pulau Pinang            68
# … with 7,004 more rows

Вы можете использовать тот же код для набора данных icu.

zher4883
9 августа 2021 в 02:43
0

Спасибо. Это именно то, что я ищу.