<- flights %>%
hourly_delay filter(!is.na(dep_delay)) %>%
group_by(date, hour) %>%
summarise(delay = mean(dep_delay), n = n()) %>%
filter(n > 10)
데이터 과학 문제
데이터 과학 문제
데이터 사이언스 - 출판
복잡성
시각화 - 그래프 문법 3
디자인 - 코드
날짜와 시간별로 총 빈도수와 출발연착 평균 시간을 구한다. 단, 총빈도수가 10 회 미만인 것은 제외하고 출발연착 시간의 결측값을 제거하고 계산한다.
flights
데이터프레임에서- 출발 연착시간(
dep_delay
) 칼럼에서 결측값이 없는 (!is.na()
) 행을 필터링 하고 - 날짜별(
date
), 시간별(hour
) 그룹을 묶어 - 평균 출발 연착시간을 계산하고 총빈도수 총계를 내고
- 총빈도수가 10회 이상인 날짜와 시간을 찾아내시오
<- filter(
hourly_delay summarise(
group_by(
filter(
flights, !is.na(dep_delay)
),
date, hour
), delay = mean(dep_delay),
n = n()
), > 10
n )
SELECT "date", "hour", "delay", "n"
FROM (
SELECT "date", "hour",
AVG("dep_delay") AS "delay",
COUNT() AS "n"
FROM "flights"
WHERE NOT("dep_delay" IS NULL)
GROUP BY "date", "hour"
AS "_W1"
) WHERE "n" > 10.0
'date','hour','dep_delay']]
flights[[ ...
디자인 - 데이터
- WHO 결핵 원데이터
- WHO 에서 년도별, 국가별, 연령별, 성별, 진단방법별 결핵 발병사례 조사 통계 데이터
- 진단방법
rel
stands for cases of relapseep
stands for cases of extrapulmonary TBsn
stands for cases of pulmonary TB that could not be diagnosed by a pulmonary smear (smear negative)sp
stands for cases of pulmonary TB that could be diagnosed by a pulmonary smear (smear positive)
- 연령
- 014 = 0 – 14 years old
- 1524 = 15 – 24 years old
- 2534 = 25 – 34 years old
- 3544 = 35 – 44 years old
- 4554 = 45 – 54 years old
- 5564 = 55 – 64 years old
- 65 = 65 or older
- 성별
- males (m)
- females (f)
library(tidyverse)
::who tidyr
# A tibble: 7,240 × 60
country iso2 iso3 year new_sp_m014 new_sp_m1524 new_sp_m2534 new_sp_m3544
<chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Afghani… AF AFG 1980 NA NA NA NA
2 Afghani… AF AFG 1981 NA NA NA NA
3 Afghani… AF AFG 1982 NA NA NA NA
4 Afghani… AF AFG 1983 NA NA NA NA
5 Afghani… AF AFG 1984 NA NA NA NA
6 Afghani… AF AFG 1985 NA NA NA NA
7 Afghani… AF AFG 1986 NA NA NA NA
8 Afghani… AF AFG 1987 NA NA NA NA
9 Afghani… AF AFG 1988 NA NA NA NA
10 Afghani… AF AFG 1989 NA NA NA NA
# ℹ 7,230 more rows
# ℹ 52 more variables: new_sp_m4554 <dbl>, new_sp_m5564 <dbl>,
# new_sp_m65 <dbl>, new_sp_f014 <dbl>, new_sp_f1524 <dbl>,
# new_sp_f2534 <dbl>, new_sp_f3544 <dbl>, new_sp_f4554 <dbl>,
# new_sp_f5564 <dbl>, new_sp_f65 <dbl>, new_sn_m014 <dbl>,
# new_sn_m1524 <dbl>, new_sn_m2534 <dbl>, new_sn_m3544 <dbl>,
# new_sn_m4554 <dbl>, new_sn_m5564 <dbl>, new_sn_m65 <dbl>, …
%>%
who pivot_longer(
cols = new_sp_m014:newrel_f65,
names_to = "key",
values_to = "cases",
values_drop_na = TRUE
%>%
) mutate(
key = stringr::str_replace(key, "newrel", "new_rel")
%>%
) separate(key, c("new", "var", "sexage")) %>%
select(-new, -iso2, -iso3) %>%
separate(sexage, c("sex", "age"), sep = 1)
# A tibble: 76,046 × 6
country year var sex age cases
<chr> <dbl> <chr> <chr> <chr> <dbl>
1 Afghanistan 1997 sp m 014 0
2 Afghanistan 1997 sp m 1524 10
3 Afghanistan 1997 sp m 2534 6
4 Afghanistan 1997 sp m 3544 3
5 Afghanistan 1997 sp m 4554 5
6 Afghanistan 1997 sp m 5564 2
7 Afghanistan 1997 sp m 65 0
8 Afghanistan 1997 sp f 014 5
9 Afghanistan 1997 sp f 1524 38
10 Afghanistan 1997 sp f 2534 36
# ℹ 76,036 more rows
디자인 - 사람 대 기계
각주
Comparing ggplot2 and R Base Graphics By Nathan Yau↩︎