library(readr)
exercise_sample <- read_csv("https://raw.githubusercontent.com/ywchiu/cdc_course/master/data/exercise_sample.csv",
col_types = cols(report_id = col_character()))
head(exercise_sample)
## # A tibble: 6 × 19
## report_id age 是否境外移入 GENDER 通報日 發病日
## <chr> <dbl> <chr> <chr> <dttm> <dttm>
## 1 10000590510… 55 是 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 2 10000018414… 10 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 3 10000050846… 35 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 4 10000663290… 45 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 5 10000784503… 35 否 M 2023-02-18 00:00:00 2023-02-18 00:00:00
## 6 10000396145… 35 否 M 2023-02-18 00:00:00 2023-02-18 00:00:00
## # ℹ 13 more variables: 研判日 <dttm>, 縣市 <chr>, 鄉鎮市區 <chr>, 職業 <chr>,
## # 有無慢性疾病病史及相關危險因子 <chr>, 是否使用ECMO <chr>,
## # `首次使>用ECMO日` <lgl>, 是否插管 <chr>, 首次插管日 <lgl>,
## # 首次入住加護病房日 <chr>, 快篩 <chr>, PCR <chr>, CT值 <lgl>
class(exercise_sample)
## [1] "spec_tbl_df" "tbl_df" "tbl" "data.frame"
str(exercise_sample)
## spc_tbl_ [100 × 19] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ report_id : chr [1:100] "10000590510349" "10000018414615" "10000050846608" "10000663290039" ...
## $ age : num [1:100] 55 10 35 45 35 35 20 30 95 15 ...
## $ 是否境外移入 : chr [1:100] "是" "否" "否" "否" ...
## $ GENDER : chr [1:100] "F" "F" "F" "F" ...
## $ 通報日 : POSIXct[1:100], format: "2023-02-18" "2023-02-18" ...
## $ 發病日 : POSIXct[1:100], format: "2023-02-18" "2023-02-18" ...
## $ 研判日 : POSIXct[1:100], format: "2023-02-18 02:35:16" "2023-02-18 02:35:12" ...
## $ 縣市 : chr [1:100] "連江縣" "連江縣" "連江縣" "連江縣" ...
## $ 鄉鎮市區 : chr [1:100] "北竿鄉" "北竿鄉" "北竿鄉" "北竿鄉" ...
## $ 職業 : chr [1:100] NA NA NA NA ...
## $ 有無慢性疾病病史及相關危險因子: chr [1:100] "無" "無" "無" "有" ...
## $ 是否使用ECMO : chr [1:100] "否" "否" "否" "否" ...
## $ 首次使>用ECMO日 : logi [1:100] NA NA NA NA NA NA ...
## $ 是否插管 : chr [1:100] "否" "否" "否" "否" ...
## $ 首次插管日 : logi [1:100] NA NA NA NA NA NA ...
## $ 首次入住加護病房日 : chr [1:100] "無入住" "無入住" "無入住" "無入住" ...
## $ 快篩 : chr [1:100] "陽性" "陽性" "陽性" "陽性" ...
## $ PCR : chr [1:100] "未檢驗" "未檢驗" "未檢驗" "未檢驗" ...
## $ CT值 : logi [1:100] NA NA NA NA NA NA ...
## - attr(*, "spec")=
## .. cols(
## .. report_id = col_character(),
## .. age = col_double(),
## .. 是否境外移入 = col_character(),
## .. GENDER = col_character(),
## .. 通報日 = col_datetime(format = ""),
## .. 發病日 = col_datetime(format = ""),
## .. 研判日 = col_datetime(format = ""),
## .. 縣市 = col_character(),
## .. 鄉鎮市區 = col_character(),
## .. 職業 = col_character(),
## .. 有無慢性疾病病史及相關危險因子 = col_character(),
## .. 是否使用ECMO = col_character(),
## .. `首次使>用ECMO日` = col_logical(),
## .. 是否插管 = col_character(),
## .. 首次插管日 = col_logical(),
## .. 首次入住加護病房日 = col_character(),
## .. 快篩 = col_character(),
## .. PCR = col_character(),
## .. CT值 = col_logical()
## .. )
## - attr(*, "problems")=<externalptr>
summary(exercise_sample)
## report_id age 是否境外移入 GENDER
## Length:100 Min. : 5.00 Length:100 Length:100
## Class :character 1st Qu.:18.75 Class :character Class :character
## Mode :character Median :30.00 Mode :character Mode :character
## Mean :31.25
## 3rd Qu.:41.25
## Max. :95.00
## 通報日 發病日
## Min. :2023-02-14 00:00:00 Min. :2023-02-14 00:00:00
## 1st Qu.:2023-02-22 00:00:00 1st Qu.:2023-02-22 00:00:00
## Median :2023-02-28 00:00:00 Median :2023-02-28 00:00:00
## Mean :2023-02-28 15:07:12 Mean :2023-02-28 15:07:12
## 3rd Qu.:2023-03-03 00:00:00 3rd Qu.:2023-03-03 00:00:00
## Max. :2023-03-20 00:00:00 Max. :2023-03-20 00:00:00
## 研判日 縣市 鄉鎮市區
## Min. :2023-02-18 02:34:57.00 Length:100 Length:100
## 1st Qu.:2023-02-22 17:26:26.00 Class :character Class :character
## Median :2023-02-28 01:31:38.00 Mode :character Mode :character
## Mean :2023-03-01 07:50:41.51
## 3rd Qu.:2023-03-03 22:26:25.25
## Max. :2023-03-20 09:51:11.00
## 職業 有無慢性疾病病史及相關危險因子 是否使用ECMO
## Length:100 Length:100 Length:100
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
## 首次使>用ECMO日 是否插管 首次插管日 首次入住加護病房日
## Mode:logical Length:100 Mode:logical Length:100
## NA's:100 Class :character NA's:100 Class :character
## Mode :character Mode :character
##
##
##
## 快篩 PCR CT值
## Length:100 Length:100 Mode:logical
## Class :character Class :character NA's:100
## Mode :character Mode :character
##
##
##
exercise_sample$是否境外移入 <- as.factor(exercise_sample$是否境外移入)
summary(exercise_sample)
## report_id age 是否境外移入 GENDER
## Length:100 Min. : 5.00 否:94 Length:100
## Class :character 1st Qu.:18.75 是: 6 Class :character
## Mode :character Median :30.00 Mode :character
## Mean :31.25
## 3rd Qu.:41.25
## Max. :95.00
## 通報日 發病日
## Min. :2023-02-14 00:00:00 Min. :2023-02-14 00:00:00
## 1st Qu.:2023-02-22 00:00:00 1st Qu.:2023-02-22 00:00:00
## Median :2023-02-28 00:00:00 Median :2023-02-28 00:00:00
## Mean :2023-02-28 15:07:12 Mean :2023-02-28 15:07:12
## 3rd Qu.:2023-03-03 00:00:00 3rd Qu.:2023-03-03 00:00:00
## Max. :2023-03-20 00:00:00 Max. :2023-03-20 00:00:00
## 研判日 縣市 鄉鎮市區
## Min. :2023-02-18 02:34:57.00 Length:100 Length:100
## 1st Qu.:2023-02-22 17:26:26.00 Class :character Class :character
## Median :2023-02-28 01:31:38.00 Mode :character Mode :character
## Mean :2023-03-01 07:50:41.51
## 3rd Qu.:2023-03-03 22:26:25.25
## Max. :2023-03-20 09:51:11.00
## 職業 有無慢性疾病病史及相關危險因子 是否使用ECMO
## Length:100 Length:100 Length:100
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
## 首次使>用ECMO日 是否插管 首次插管日 首次入住加護病房日
## Mode:logical Length:100 Mode:logical Length:100
## NA's:100 Class :character NA's:100 Class :character
## Mode :character Mode :character
##
##
##
## 快篩 PCR CT值
## Length:100 Length:100 Mode:logical
## Class :character Class :character NA's:100
## Mode :character Mode :character
##
##
##
head(exercise_sample)
## # A tibble: 6 × 19
## report_id age 是否境外移入 GENDER 通報日 發病日
## <chr> <dbl> <fct> <chr> <dttm> <dttm>
## 1 10000590510… 55 是 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 2 10000018414… 10 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 3 10000050846… 35 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 4 10000663290… 45 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 5 10000784503… 35 否 M 2023-02-18 00:00:00 2023-02-18 00:00:00
## 6 10000396145… 35 否 M 2023-02-18 00:00:00 2023-02-18 00:00:00
## # ℹ 13 more variables: 研判日 <dttm>, 縣市 <chr>, 鄉鎮市區 <chr>, 職業 <chr>,
## # 有無慢性疾病病史及相關危險因子 <chr>, 是否使用ECMO <chr>,
## # `首次使>用ECMO日` <lgl>, 是否插管 <chr>, 首次插管日 <lgl>,
## # 首次入住加護病房日 <chr>, 快篩 <chr>, PCR <chr>, CT值 <lgl>
head(exercise_sample, 10 )
## # A tibble: 10 × 19
## report_id age 是否境外移入 GENDER 通報日 發病日
## <chr> <dbl> <fct> <chr> <dttm> <dttm>
## 1 1000059051… 55 是 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 2 1000001841… 10 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 3 1000005084… 35 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 4 1000066329… 45 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 5 1000078450… 35 否 M 2023-02-18 00:00:00 2023-02-18 00:00:00
## 6 1000039614… 35 否 M 2023-02-18 00:00:00 2023-02-18 00:00:00
## 7 1000089817… 20 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 8 1000005881… 30 否 F 2023-02-19 00:00:00 2023-02-19 00:00:00
## 9 1000011467… 95 否 F 2023-02-19 00:00:00 2023-02-19 00:00:00
## 10 1000071711… 15 否 M 2023-02-20 00:00:00 2023-02-20 00:00:00
## # ℹ 13 more variables: 研判日 <dttm>, 縣市 <chr>, 鄉鎮市區 <chr>, 職業 <chr>,
## # 有無慢性疾病病史及相關危險因子 <chr>, 是否使用ECMO <chr>,
## # `首次使>用ECMO日` <lgl>, 是否插管 <chr>, 首次插管日 <lgl>,
## # 首次入住加護病房日 <chr>, 快篩 <chr>, PCR <chr>, CT值 <lgl>
#?head
tail(exercise_sample)
## # A tibble: 6 × 19
## report_id age 是否境外移入 GENDER 通報日 發病日
## <chr> <dbl> <fct> <chr> <dttm> <dttm>
## 1 10000075027… 30 否 F 2023-03-17 00:00:00 2023-03-17 00:00:00
## 2 10000229938… 50 否 M 2023-03-17 00:00:00 2023-03-17 00:00:00
## 3 10000907653… 45 否 F 2023-03-17 00:00:00 2023-03-17 00:00:00
## 4 10000923309… 35 否 F 2023-03-19 00:00:00 2023-03-19 00:00:00
## 5 10000050379… 20 否 F 2023-03-15 00:00:00 2023-03-15 00:00:00
## 6 10000068294… 25 否 F 2023-03-20 00:00:00 2023-03-20 00:00:00
## # ℹ 13 more variables: 研判日 <dttm>, 縣市 <chr>, 鄉鎮市區 <chr>, 職業 <chr>,
## # 有無慢性疾病病史及相關危險因子 <chr>, 是否使用ECMO <chr>,
## # `首次使>用ECMO日` <lgl>, 是否插管 <chr>, 首次插管日 <lgl>,
## # 首次入住加護病房日 <chr>, 快篩 <chr>, PCR <chr>, CT值 <lgl>
exercise_sample[1:3, ]
## # A tibble: 3 × 19
## report_id age 是否境外移入 GENDER 通報日 發病日
## <chr> <dbl> <fct> <chr> <dttm> <dttm>
## 1 10000590510… 55 是 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 2 10000018414… 10 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 3 10000050846… 35 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## # ℹ 13 more variables: 研判日 <dttm>, 縣市 <chr>, 鄉鎮市區 <chr>, 職業 <chr>,
## # 有無慢性疾病病史及相關危險因子 <chr>, 是否使用ECMO <chr>,
## # `首次使>用ECMO日` <lgl>, 是否插管 <chr>, 首次插管日 <lgl>,
## # 首次入住加護病房日 <chr>, 快篩 <chr>, PCR <chr>, CT值 <lgl>
exercise_sample[1:3, 1]
## # A tibble: 3 × 1
## report_id
## <chr>
## 1 10000590510349
## 2 10000018414615
## 3 10000050846608
exercise_sample[1:3, "report_id"]
## # A tibble: 3 × 1
## report_id
## <chr>
## 1 10000590510349
## 2 10000018414615
## 3 10000050846608
exercise_sample[1:3, c("report_id", "age") ]
## # A tibble: 3 × 2
## report_id age
## <chr> <dbl>
## 1 10000590510349 55
## 2 10000018414615 10
## 3 10000050846608 35
exercise_sample[1:3, 1:2 ]
## # A tibble: 3 × 2
## report_id age
## <chr> <dbl>
## 1 10000590510349 55
## 2 10000018414615 10
## 3 10000050846608 35
head(exercise_sample$report_id)
## [1] "10000590510349" "10000018414615" "10000050846608" "10000663290039"
## [5] "10000784503625" "10000396145701"
df <- exercise_sample[1:5, c("report_id", 'age')]
df
## # A tibble: 5 × 2
## report_id age
## <chr> <dbl>
## 1 10000590510349 55
## 2 10000018414615 10
## 3 10000050846608 35
## 4 10000663290039 45
## 5 10000784503625 35
exercise_sample$age > 30
## [1] TRUE FALSE TRUE TRUE TRUE TRUE FALSE FALSE TRUE FALSE FALSE FALSE
## [13] TRUE TRUE FALSE TRUE TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE
## [25] TRUE TRUE TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE TRUE FALSE
## [37] FALSE FALSE FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE FALSE FALSE
## [49] FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE
## [61] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [73] TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE
## [85] TRUE TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE TRUE
## [97] TRUE TRUE FALSE FALSE
exercise_sample[exercise_sample$age > 30, ]
## # A tibble: 38 × 19
## report_id age 是否境外移入 GENDER 通報日 發病日
## <chr> <dbl> <fct> <chr> <dttm> <dttm>
## 1 1000059051… 55 是 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 2 1000005084… 35 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 3 1000066329… 45 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 4 1000078450… 35 否 M 2023-02-18 00:00:00 2023-02-18 00:00:00
## 5 1000039614… 35 否 M 2023-02-18 00:00:00 2023-02-18 00:00:00
## 6 1000011467… 95 否 F 2023-02-19 00:00:00 2023-02-19 00:00:00
## 7 1000021250… 40 否 F 2023-02-20 00:00:00 2023-02-20 00:00:00
## 8 1000093623… 55 否 M 2023-02-14 00:00:00 2023-02-14 00:00:00
## 9 1000067902… 35 否 F 2023-02-20 00:00:00 2023-02-20 00:00:00
## 10 1000038195… 50 否 F 2023-02-20 00:00:00 2023-02-20 00:00:00
## # ℹ 28 more rows
## # ℹ 13 more variables: 研判日 <dttm>, 縣市 <chr>, 鄉鎮市區 <chr>, 職業 <chr>,
## # 有無慢性疾病病史及相關危險因子 <chr>, 是否使用ECMO <chr>,
## # `首次使>用ECMO日` <lgl>, 是否插管 <chr>, 首次插管日 <lgl>,
## # 首次入住加護病房日 <chr>, 快篩 <chr>, PCR <chr>, CT值 <lgl>
which(exercise_sample$age > 30)
## [1] 1 3 4 5 6 9 13 14 16 17 20 23 25 26 27 28 30 31 35 40 41 42 43 45 46
## [26] 55 58 63 73 79 82 85 86 92 94 96 97 98
exercise_sample[which(exercise_sample$age > 30), ]
## # A tibble: 38 × 19
## report_id age 是否境外移入 GENDER 通報日 發病日
## <chr> <dbl> <fct> <chr> <dttm> <dttm>
## 1 1000059051… 55 是 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 2 1000005084… 35 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 3 1000066329… 45 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 4 1000078450… 35 否 M 2023-02-18 00:00:00 2023-02-18 00:00:00
## 5 1000039614… 35 否 M 2023-02-18 00:00:00 2023-02-18 00:00:00
## 6 1000011467… 95 否 F 2023-02-19 00:00:00 2023-02-19 00:00:00
## 7 1000021250… 40 否 F 2023-02-20 00:00:00 2023-02-20 00:00:00
## 8 1000093623… 55 否 M 2023-02-14 00:00:00 2023-02-14 00:00:00
## 9 1000067902… 35 否 F 2023-02-20 00:00:00 2023-02-20 00:00:00
## 10 1000038195… 50 否 F 2023-02-20 00:00:00 2023-02-20 00:00:00
## # ℹ 28 more rows
## # ℹ 13 more variables: 研判日 <dttm>, 縣市 <chr>, 鄉鎮市區 <chr>, 職業 <chr>,
## # 有無慢性疾病病史及相關危險因子 <chr>, 是否使用ECMO <chr>,
## # `首次使>用ECMO日` <lgl>, 是否插管 <chr>, 首次插管日 <lgl>,
## # 首次入住加護病房日 <chr>, 快篩 <chr>, PCR <chr>, CT值 <lgl>
sort(exercise_sample$age)
## [1] 5 5 5 5 5 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 15 15 15 15
## [26] 20 20 20 20 20 20 20 20 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 30
## [51] 30 30 30 30 30 30 30 30 30 30 30 30 35 35 35 35 35 35 35 35 40 40 40 40 40
## [76] 45 45 45 45 50 50 50 50 50 50 55 55 55 55 55 60 60 60 60 70 70 70 75 75 95
sort(exercise_sample$age, decreasing = TRUE)
## [1] 95 75 75 70 70 70 60 60 60 60 55 55 55 55 55 50 50 50 50 50 50 45 45 45 45
## [26] 40 40 40 40 40 35 35 35 35 35 35 35 35 30 30 30 30 30 30 30 30 30 30 30 30
## [51] 30 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 20 20 20 20 20 20 20 20
## [76] 15 15 15 15 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 5 5 5 5 5
#order(exercise_sample$age)
a <- c(50,60,70,20,30,80,65)
sort(a)
## [1] 20 30 50 60 65 70 80
order(a)
## [1] 4 5 1 2 7 3 6
a[order(a)]
## [1] 20 30 50 60 65 70 80
exercise_sample[order(exercise_sample$age), ]
## # A tibble: 100 × 19
## report_id age 是否境外移入 GENDER 通報日 發病日
## <chr> <dbl> <fct> <chr> <dttm> <dttm>
## 1 1000067549… 5 否 F 2023-02-20 00:00:00 2023-02-20 00:00:00
## 2 1000034958… 5 否 F 2023-02-20 00:00:00 2023-02-20 00:00:00
## 3 1000081321… 5 否 M 2023-03-01 00:00:00 2023-03-01 00:00:00
## 4 1000002221… 5 否 M 2023-03-02 00:00:00 2023-03-02 00:00:00
## 5 1000017452… 5 否 M 2023-03-16 00:00:00 2023-03-16 00:00:00
## 6 1000001841… 10 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 7 1000051298… 10 否 F 2023-02-20 00:00:00 2023-02-20 00:00:00
## 8 1000036914… 10 是 F 2023-02-22 00:00:00 2023-02-22 00:00:00
## 9 1000084204… 10 否 F 2023-02-22 00:00:00 2023-02-22 00:00:00
## 10 1000012458… 10 否 F 2023-02-22 00:00:00 2023-02-22 00:00:00
## # ℹ 90 more rows
## # ℹ 13 more variables: 研判日 <dttm>, 縣市 <chr>, 鄉鎮市區 <chr>, 職業 <chr>,
## # 有無慢性疾病病史及相關危險因子 <chr>, 是否使用ECMO <chr>,
## # `首次使>用ECMO日` <lgl>, 是否插管 <chr>, 首次插管日 <lgl>,
## # 首次入住加護病房日 <chr>, 快篩 <chr>, PCR <chr>, CT值 <lgl>
exercise_sample[order(exercise_sample$age, decreasing = TRUE), ]
## # A tibble: 100 × 19
## report_id age 是否境外移入 GENDER 通報日 發病日
## <chr> <dbl> <fct> <chr> <dttm> <dttm>
## 1 1000011467… 95 否 F 2023-02-19 00:00:00 2023-02-19 00:00:00
## 2 1000090701… 75 否 M 2023-02-22 00:00:00 2023-02-22 00:00:00
## 3 1000035867… 75 否 M 2023-03-01 00:00:00 2023-03-01 00:00:00
## 4 1000009427… 70 否 M 2023-02-21 00:00:00 2023-02-21 00:00:00
## 5 1000027849… 70 否 F 2023-02-27 00:00:00 2023-02-27 00:00:00
## 6 1000081792… 70 否 M 2023-03-03 00:00:00 2023-03-03 00:00:00
## 7 1000053363… 60 否 M 2023-02-22 00:00:00 2023-02-22 00:00:00
## 8 1000019326… 60 否 M 2023-02-23 00:00:00 2023-02-23 00:00:00
## 9 1000023009… 60 否 F 2023-02-26 00:00:00 2023-02-26 00:00:00
## 10 1000092338… 60 否 M 2023-02-27 00:00:00 2023-02-27 00:00:00
## # ℹ 90 more rows
## # ℹ 13 more variables: 研判日 <dttm>, 縣市 <chr>, 鄉鎮市區 <chr>, 職業 <chr>,
## # 有無慢性疾病病史及相關危險因子 <chr>, 是否使用ECMO <chr>,
## # `首次使>用ECMO日` <lgl>, 是否插管 <chr>, 首次插管日 <lgl>,
## # 首次入住加護病房日 <chr>, 快篩 <chr>, PCR <chr>, CT值 <lgl>
# exercise_sample$age > 60
sum(exercise_sample$age > 60)
## [1] 6
length(which(exercise_sample$age > 60))
## [1] 6
nrow(exercise_sample[exercise_sample$age > 60, ])
## [1] 6
#str(exercise_sample)
# 創建一個包含缺失值的向量
data <- c(10, NA, 25, 30, NA)
data
## [1] 10 NA 25 30 NA
# 判斷缺失值
is_na <- is.na(data)
print(is_na) # 輸出: FALSE TRUE FALSE FALSE TRUE
## [1] FALSE TRUE FALSE FALSE TRUE
#is.na(exercise_sample)
sum(is.na(exercise_sample$report_id))
## [1] 0
sum(is.na(exercise_sample$age))
## [1] 0
colSums(is.na(exercise_sample))
## report_id age
## 0 0
## 是否境外移入 GENDER
## 0 0
## 通報日 發病日
## 0 0
## 研判日 縣市
## 0 0
## 鄉鎮市區 職業
## 0 91
## 有無慢性疾病病史及相關危險因子 是否使用ECMO
## 3 0
## 首次使>用ECMO日 是否插管
## 100 0
## 首次插管日 首次入住加護病房日
## 100 0
## 快篩 PCR
## 0 0
## CT值
## 100
df <- data.frame(
name = c("John", "Jane", "Michael", "Emily", NA),
age = c(30, 25, 40, NA, 50)
)
df
## name age
## 1 John 30
## 2 Jane 25
## 3 Michael 40
## 4 Emily NA
## 5 <NA> 50
na.omit(df)
## name age
## 1 John 30
## 2 Jane 25
## 3 Michael 40
cleaned_sample<- na.omit(exercise_sample)
cleaned_sample
## # A tibble: 0 × 19
## # ℹ 19 variables: report_id <chr>, age <dbl>, 是否境外移入 <fct>, GENDER <chr>,
## # 通報日 <dttm>, 發病日 <dttm>, 研判日 <dttm>, 縣市 <chr>, 鄉鎮市區 <chr>,
## # 職業 <chr>, 有無慢性疾病病史及相關危險因子 <chr>, 是否使用ECMO <chr>,
## # 首次使>用ECMO日 <lgl>, 是否插管 <chr>, 首次插管日 <lgl>,
## # 首次入住加護病房日 <chr>, 快篩 <chr>, PCR <chr>, CT值 <lgl>
exercise_sample[!is.na(exercise_sample$有無慢性疾病病史及相關危險因子), ]
## # A tibble: 97 × 19
## report_id age 是否境外移入 GENDER 通報日 發病日
## <chr> <dbl> <fct> <chr> <dttm> <dttm>
## 1 1000059051… 55 是 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 2 1000001841… 10 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 3 1000005084… 35 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 4 1000066329… 45 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 5 1000078450… 35 否 M 2023-02-18 00:00:00 2023-02-18 00:00:00
## 6 1000039614… 35 否 M 2023-02-18 00:00:00 2023-02-18 00:00:00
## 7 1000089817… 20 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 8 1000005881… 30 否 F 2023-02-19 00:00:00 2023-02-19 00:00:00
## 9 1000011467… 95 否 F 2023-02-19 00:00:00 2023-02-19 00:00:00
## 10 1000071711… 15 否 M 2023-02-20 00:00:00 2023-02-20 00:00:00
## # ℹ 87 more rows
## # ℹ 13 more variables: 研判日 <dttm>, 縣市 <chr>, 鄉鎮市區 <chr>, 職業 <chr>,
## # 有無慢性疾病病史及相關危險因子 <chr>, 是否使用ECMO <chr>,
## # `首次使>用ECMO日` <lgl>, 是否插管 <chr>, 首次插管日 <lgl>,
## # 首次入住加護病房日 <chr>, 快篩 <chr>, PCR <chr>, CT值 <lgl>
# 創建一個包含缺失值的向量
data <- c(10, NA, 25, 30, NA)
# 將缺失值替換為0
data_no_na <- replace(data, is.na(data), 0)
print(data_no_na) # 輸出: 10 0 25 30 0
## [1] 10 0 25 30 0
exercise_sample$有無慢性疾病病史及相關危險因子 <- replace(
exercise_sample$有無慢性疾病病史及相關危險因子 ,
is.na(exercise_sample$有無慢性疾病病史及相關危險因子),
'無'
)
colSums(is.na(exercise_sample))
## report_id age
## 0 0
## 是否境外移入 GENDER
## 0 0
## 通報日 發病日
## 0 0
## 研判日 縣市
## 0 0
## 鄉鎮市區 職業
## 0 91
## 有無慢性疾病病史及相關危險因子 是否使用ECMO
## 0 0
## 首次使>用ECMO日 是否插管
## 100 0
## 首次插管日 首次入住加護病房日
## 100 0
## 快篩 PCR
## 0 0
## CT值
## 100
exercise_sample$有無慢性疾病病史及相關危險因子 <- ifelse(
is.na(exercise_sample$有無慢性疾病病史及相關危險因子), "無", exercise_sample$有無慢性疾病病史及相關危險因子)
假設有一份COVID-19資料集,其中記錄了許多患者的基本資料,。有時候資料集中可能會包含缺失值(NA),即某些資料未填寫或不完整。現在,我們希望你寫一個程式來計算該資料集中的缺失值比例?
sort(colSums(is.na(exercise_sample)) / nrow(exercise_sample), decreasing = TRUE)
## 首次使>用ECMO日 首次插管日
## 1.00 1.00
## CT值 職業
## 1.00 0.91
## report_id age
## 0.00 0.00
## 是否境外移入 GENDER
## 0.00 0.00
## 通報日 發病日
## 0.00 0.00
## 研判日 縣市
## 0.00 0.00
## 鄉鎮市區 有無慢性疾病病史及相關危險因子
## 0.00 0.00
## 是否使用ECMO 是否插管
## 0.00 0.00
## 首次入住加護病房日 快篩
## 0.00 0.00
## PCR
## 0.00
#sort(colSums(is.na(exercise)) / nrow(exercise), decreasing = TRUE)
head(exercise_sample)
## # A tibble: 6 × 19
## report_id age 是否境外移入 GENDER 通報日 發病日
## <chr> <dbl> <fct> <chr> <dttm> <dttm>
## 1 10000590510… 55 是 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 2 10000018414… 10 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 3 10000050846… 35 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 4 10000663290… 45 否 F 2023-02-18 00:00:00 2023-02-18 00:00:00
## 5 10000784503… 35 否 M 2023-02-18 00:00:00 2023-02-18 00:00:00
## 6 10000396145… 35 否 M 2023-02-18 00:00:00 2023-02-18 00:00:00
## # ℹ 13 more variables: 研判日 <dttm>, 縣市 <chr>, 鄉鎮市區 <chr>, 職業 <chr>,
## # 有無慢性疾病病史及相關危險因子 <chr>, 是否使用ECMO <chr>,
## # `首次使>用ECMO日` <lgl>, 是否插管 <chr>, 首次插管日 <lgl>,
## # 首次入住加護病房日 <chr>, 快篩 <chr>, PCR <chr>, CT值 <lgl>
exercise_sample$GENDER <- as.factor(exercise_sample$GENDER)
exercise_sample$age = as.integer(exercise_sample$age)
Sys.Date()
## [1] "2023-08-09"
dt <- as.Date("2023-08-08")
class(dt)
## [1] "Date"
format(dt, '%Y 年 %m 月 %d 日')
## [1] "2023 年 08 月 08 日"
datetime_str <- "2023-08-08 12:30:45"
class(datetime_str)
## [1] "character"
#as.POSIXct(datetime_str, format)
#?as.POSIXct
# 給定的字串
date_str <- "2023-08-08 12:30:45"
# 轉換成 POSIXct 格式
date_posixct <- as.POSIXct(date_str, format="%Y-%m-%d %H:%M:%S", tz = 'GMT')
# 打印結果
print(date_posixct)
## [1] "2023-08-08 12:30:45 GMT"
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
date_str <- '2023/08/08'
ymd(date_str)
## [1] "2023-08-08"
date_str <- '2023-08-08'
ymd(date_str)
## [1] "2023-08-08"
exercise_sample$通報日 <- as.POSIXct(exercise_sample$通報日)
exercise_sample$發病日 <- as.POSIXct(exercise_sample$發病日)
exercise_sample$研判日 <- as.POSIXct(exercise_sample$研判日)
(exercise_sample$研判日 - exercise_sample$發病日) / 60
## Time differences in mins
## [1] 2.5877778 2.5866667 2.5825000 2.5838889 4.8408333 16.5980556
## [7] 18.6419444 14.3213889 22.2011111 0.1547222 2.6036111 2.6022222
## [13] 2.6013889 152.6227778 14.1877778 14.1883333 16.2436111 16.5052778
## [19] 14.3433333 16.1455556 2.5997222 4.9586111 14.3533333 16.4508333
## [25] 17.2397222 17.5075000 20.8808333 20.4113889 20.8816667 0.2416667
## [31] 14.2016667 14.4227778 14.4438889 14.4430556 14.4430556 14.4430556
## [37] 16.1863889 16.1877778 22.3672222 22.3683333 22.3675000 14.3094444
## [43] 14.3094444 14.3091667 16.1922222 16.1913889 16.1911111 0.3725000
## [49] 0.3730556 0.3725000 2.6813889 14.1711111 16.2016667 16.2005556
## [55] 16.1880556 16.2011111 0.3222222 14.1838889 14.1833333 16.3538889
## [61] 16.1894444 16.3313889 16.3541667 18.1647222 22.1744444 14.3241667
## [67] 14.3236111 0.2994444 14.1580556 14.1577778 16.1275000 16.1258333
## [73] 20.3747222 22.4400000 22.4397222 22.4413889 22.4413889 22.4416667
## [79] 14.2561111 0.1700000 20.0033333 16.2547222 18.1691667 16.2538889
## [85] 16.2575000 22.3341667 22.3333333 18.1702778 18.1705556 16.1711111
## [91] 22.2036111 16.1575000 16.1708333 16.1558333 16.0866667 22.1402778
## [97] 22.1400000 12.1088889 129.7655556 9.8530556