Roy_Batty:
WHOダウン症候群のデータベースはあなたに別の変数に1M児で生まれたダウン症の赤ちゃんの数に関する情報を提供します。
私は、カテゴリ変数のために、絶対的相対的、および限界周波数でクロスタブを作成したいCountry
とYear
欲望の結果は次のようになります。
Year | 1978 1979 1980
Country | ----------------------------------------------------------------------
ALB | 76.4 78.5 87.6 ...
AUT | 87.6 67.9 80.0 …
AZE | 90.5 78.5 64.8 …
私は物事のカップルを試してみました:
まず、三つの変数のための新たなDFを作成します:
DS <- dplyr::select(DownSyndrome, YEAR, COUNTRY_REGION, VALUE)
しかし、私はそれでテーブルを使用する方法を見つけ出す、およびクロス機能can't。
私は絶対周波数を得ることができました。
DS_wide <- DownSyndrome %>%
pivot_wider(
names_from = YEAR,
values_from = VALUE)
しかし、その後、再び、私はここからの相対およびマージンの周波数を取得する方法を知りません。
すべてのヘルプは、感謝感謝されます
PS:
イアン・キャンベル:
ここだdplyr
アプローチが。
最初の行は、あなたのコードに基づいて、広いフォームに長い形式に変換します。2行目は数字のみのパターンに一致する名前を持つすべての列に基づいて合計を計算します。第三のラインは、各国の相対合計を算出します。4行目の接尾辞合計列と列に割り当て、それらをすることによってのみ番号を持つすべての列を分割します_RELATIVE
。
library(tidyverse)
DownSyndrome %>%
pivot_wider(names_from = YEAR,values_from = VALUE) %>%
mutate(TOTAL = rowSums(.[grep("[0-9]+",names(.))],na.rm=TRUE)) %>%
mutate(TOTAL_RELATIVE = TOTAL / sum(TOTAL)) %>%
mutate_at(vars(matches("[0-9]+")), list(RELATIVE = ~ ./TOTAL))
# A tibble: 49 x 104
# COUNTRY COUNTRY_GRP SEX `2008` `2009` `2010` `2011` `2012` `2013` `2014` `2015` `2016` `2017` `1985` `1986` `1987` `1988`
# <fct> <fct> <fct> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
# 1 ALB "" ALL 32 29 42 39 18 28 14 29 23 16 NA NA NA NA
# 2 AUT "" ALL 13 16 12 6 6 3 NA NA NA NA 23 29 39 24
# 3 AZE "" ALL 38 51 52 42 32 38 49 36 32 38 NA NA NA NA
# 4 BEL "" ALL 248 232 275 240 259 245 NA NA NA NA 56 126 152 126
# 5 BGR "" ALL 22 32 27 32 38 17 32 32 18 24 NA NA NA NA
# 6 BIH "" ALL NA NA NA NA NA NA NA NA NA NA 59 42 75 65
# 7 BLR "" ALL 69 60 44 61 46 50 56 53 63 56 NA NA NA NA
# 8 CHE "" ALL 121 107 127 145 152 152 131 108 112 86 NA NA NA NA
# 9 CZE "" ALL 43 49 46 53 49 45 45 43 NA NA NA NA NA 116
#10 DEU "" ALL 269 288 251 290 298 284 290 296 308 312 NA NA NA NA
あなただけの相対値をしたい場合は、使用することができますselect
。
DownSyndrome %>%
pivot_wider(names_from = YEAR,values_from = VALUE) %>%
mutate(TOTAL = rowSums(.[grep("[0-9]+",names(.))],na.rm=TRUE)) %>%
mutate(TOTAL_RELATIVE = TOTAL / sum(TOTAL)) %>%
mutate_at(vars(matches("[0-9]+")), list(RELATIVE = ~ ./TOTAL)) %>%
select(COUNTRY,matches("RELATIVE"),TOTAL_RELATIVE)
DownSyndrome <- read.csv("~/HFA_604_EN.csv",skip = 25)