Data handling with R

Hiroki Matsui
20150611

この資料は

諸処の事情でR を使う必要が生じた時、

コードから逃げずに戦う基礎知識(ググるための知識)を得る事を目的にした内部資料です。

そのため、網羅性や正確性を一部欠く表現があります。

正確・網羅的な情報はググる等して資料をあたる等しましょう。

本日お伝えしたいこと。

  • 前回演習の答え合わせ

Read 99.0% of 212164 rows
Read 212164 rows and 10 (of 10) columns from 0.025 GB file in 00:00:03

演習

data2, data3 を用いて都道府県毎の平均的な100病床あたりの急性心筋梗塞症例数を算出してください。

演習(参考資料)

演習(データダウンロード)

以下のコードでダウンロードできる。

data2 <- read.csv(file= "http://u111u.info/k14z",
                  header = T,
                  colClasses=rep("character",12))   
data3 <- read.csv(file= "http://u111u.info/k14F",
                  header = T,
                  colClasses=rep("character",8))   

解答例

head(data2)
  告示番号.2                 施設名 医療機関コード 都道府県
1          1   札幌医科大学附属病院        0119385   北海道
2          2         北海道大学病院        8010016   北海道
3          3       旭川医科大学病院        8010214   北海道
4          4 弘前大学医学部附属病院        8010221     青森
5          5   岩手医科大学附属病院        0113501     岩手
6          6           東北大学病院        8010146     宮城
               病院類型 DPC算定病床数 DPC算定病床の入院基本料
1 平成15年度DPC参加病院           890            特定機能7対1
2 平成15年度DPC参加病院           874            特定機能7対1
3 平成15年度DPC参加病院           569            特定機能7対1
4 平成15年度DPC参加病院           595            特定機能7対1
5 平成15年度DPC参加病院          1088            特定機能7対1
6 平成15年度DPC参加病院          1216            特定機能7対1
  DPC算定病床割合.3 精神病床数.4 療養病床数 結核病床数 病床総数.5
1             94.9%           42          0          6        938
2             92.4%           72          0          0        946
3             94.5%           33          0          0        602
4             93.6%           41          0          0        636
5             93.3%           78          0          0       1166
6             93.0%           70          0          0       1308
head(data3)
  告示番号                 施設名 X99 X97 X97.輸血以外の再掲. X03 X02 X01
1        1   札幌医科大学附属病院   -   -                   -  20   -   -
2        2         北海道大学病院   -   -                   -  14   -   -
3        3       旭川医科大学病院   -   -                   -  24   -   -
4        4 弘前大学医学部附属病院  14   -                   - 128   -   -
5        5   岩手医科大学附属病院  17  12                   - 106   -   -
6        6           東北大学病院  10   -                   -  18   -   -

解答例

まずは、data3から各医療機関の合計症例数を算出

library(dplyr)
fun_rep_0 <- function(x){
  return(ifelse(is.na(x),0,x))
}

解答例

まずは、data3から各医療機関の合計症例数を算出

data3 %>%
  dplyr::mutate(X99 = as.numeric(X99),
                X97 = as.numeric(X97),
                X03 = as.numeric(X03),
                X02 = as.numeric(X02),
                X01 = as.numeric(X01)) %>%
  dplyr::mutate(X99 = fun_rep_0(X99),
                X97 = fun_rep_0(X97),
                X03 = fun_rep_0(X03),
                X02 = fun_rep_0(X02),
                X01 = fun_rep_0(X01)) %>%
  dplyr::mutate(sum = X99+X97+X03+X02+X01) -> data3

解答例

まずは、data3から各医療機関の合計症例数を算出

head(data3)
  告示番号                 施設名 X99 X97 X97.輸血以外の再掲. X03 X02 X01
1        1   札幌医科大学附属病院   0   0                   -  20   0   0
2        2         北海道大学病院   0   0                   -  14   0   0
3        3       旭川医科大学病院   0   0                   -  24   0   0
4        4 弘前大学医学部附属病院  14   0                   - 128   0   0
5        5   岩手医科大学附属病院  17  12                   - 106   0   0
6        6           東北大学病院  10   0                   -  18   0   0
  sum
1  20
2  14
3  24
4 142
5 135
6  28
  dplyr::select(data3, 告示番号, sum)-> data3

解答例

まずは、data3から各医療機関の合計症例数を算出

head(data2)
  告示番号.2                 施設名 医療機関コード 都道府県
1          1   札幌医科大学附属病院        0119385   北海道
2          2         北海道大学病院        8010016   北海道
3          3       旭川医科大学病院        8010214   北海道
4          4 弘前大学医学部附属病院        8010221     青森
5          5   岩手医科大学附属病院        0113501     岩手
6          6           東北大学病院        8010146     宮城
               病院類型 DPC算定病床数 DPC算定病床の入院基本料
1 平成15年度DPC参加病院           890            特定機能7対1
2 平成15年度DPC参加病院           874            特定機能7対1
3 平成15年度DPC参加病院           569            特定機能7対1
4 平成15年度DPC参加病院           595            特定機能7対1
5 平成15年度DPC参加病院          1088            特定機能7対1
6 平成15年度DPC参加病院          1216            特定機能7対1
  DPC算定病床割合.3 精神病床数.4 療養病床数 結核病床数 病床総数.5
1             94.9%           42          0          6        938
2             92.4%           72          0          0        946
3             94.5%           33          0          0        602
4             93.6%           41          0          0        636
5             93.3%           78          0          0       1166
6             93.0%           70          0          0       1308
  dplyr::select(data3, 告示番号, sum)-> data3

解答例

data2にdata3をJoin

names(data2)[1] <- "id2"
names(data3)[1] <- "id3"
dplyr::inner_join(x=data2,y=data3, by = c("id2"="id3"))-> data
head(data)
  id2                 施設名 医療機関コード 都道府県              病院類型
1   1   札幌医科大学附属病院        0119385   北海道 平成15年度DPC参加病院
2   2         北海道大学病院        8010016   北海道 平成15年度DPC参加病院
3   3       旭川医科大学病院        8010214   北海道 平成15年度DPC参加病院
4   4 弘前大学医学部附属病院        8010221     青森 平成15年度DPC参加病院
5   5   岩手医科大学附属病院        0113501     岩手 平成15年度DPC参加病院
6   6           東北大学病院        8010146     宮城 平成15年度DPC参加病院
  DPC算定病床数 DPC算定病床の入院基本料 DPC算定病床割合.3 精神病床数.4
1           890            特定機能7対1             94.9%           42
2           874            特定機能7対1             92.4%           72
3           569            特定機能7対1             94.5%           33
4           595            特定機能7対1             93.6%           41
5          1088            特定機能7対1             93.3%           78
6          1216            特定機能7対1             93.0%           70
  療養病床数 結核病床数 病床総数.5 sum
1          0          6        938  20
2          0          0        946  14
3          0          0        602  24
4          0          0        636 142
5          0          0       1166 135
6          0          0       1308  28

解答例

100床当たりの平均症例数を算出

data %>% 
dplyr::mutate(num_p_bed = (sum/as.numeric(病床総数.5))*100) -> data
head(data)
  id2                 施設名 医療機関コード 都道府県              病院類型
1   1   札幌医科大学附属病院        0119385   北海道 平成15年度DPC参加病院
2   2         北海道大学病院        8010016   北海道 平成15年度DPC参加病院
3   3       旭川医科大学病院        8010214   北海道 平成15年度DPC参加病院
4   4 弘前大学医学部附属病院        8010221     青森 平成15年度DPC参加病院
5   5   岩手医科大学附属病院        0113501     岩手 平成15年度DPC参加病院
6   6           東北大学病院        8010146     宮城 平成15年度DPC参加病院
  DPC算定病床数 DPC算定病床の入院基本料 DPC算定病床割合.3 精神病床数.4
1           890            特定機能7対1             94.9%           42
2           874            特定機能7対1             92.4%           72
3           569            特定機能7対1             94.5%           33
4           595            特定機能7対1             93.6%           41
5          1088            特定機能7対1             93.3%           78
6          1216            特定機能7対1             93.0%           70
  療養病床数 結核病床数 病床総数.5 sum num_p_bed
1          0          6        938  20  2.132196
2          0          0        946  14  1.479915
3          0          0        602  24  3.986711
4          0          0        636 142 22.327044
5          0          0       1166 135 11.578045
6          0          0       1308  28  2.140673

解答例

都道府県単位で平均値を取る。

data %>%
  dplyr::group_by(都道府県) %>%
  dplyr::summarise(ave = mean(num_p_bed)) -> data_sum
head(data_sum)
Source: local data frame [6 x 2]

  都道府県      ave
1     愛知 9.855506
2     愛媛 4.751903
3     茨城 7.510777
4     岡山 4.768765
5     沖縄 8.129773
6     岩手 7.789098