私はdplyr
、要約、フィルタリング、およびグループ化について学び、取り組んでいます。
都市名、州名、年、総人口、総人口、性別の合計、および都市と年ごとの平均の人口調査データを含むデータセット「set2c」があります。
https://share.getcloudapp.com/o0uQnyGn
続けて、各都市の人口の合計で集計することにより、州の人口を見つけようとしています。各州の平均人口をまとめた新しい列「stateAvePop」が欲しいのですが。
set2d <- set2c %>%
group_by(YEAR,STNAME,totalAll,totalMale,totalFemale) %>%
summarize(stateavepop = sum(avgpop))
set2d
https://share.getcloudapp.com/Z4uw0epe
しかし、平均値を取得しようとしているときは、どういうわけか州で並べ替える必要があると思います。誰かが私が間違っているところを見てくれませんか?
head(set2c、20)は以下を返します:
# A tibble: 20 x 7
# Groups: CTYNAME, YEAR, STNAME, totalAll, totalMale [20]
CTYNAME YEAR STNAME totalAll totalMale totalFemale avgpop
<fct> <int> <fct> <int> <int> <int> <dbl>
1 Abbeville County 10 South Carolina 24560 11895 12665 24560
2 Abbeville County 11 South Carolina 24541 11868 12673 24541
3 Acadia Parish 10 Louisiana 62514 30405 32109 62514
4 Acadia Parish 11 Louisiana 62190 30342 31848 62190
5 Accomack County 10 Virginia 32566 15871 16695 32566
6 Accomack County 11 Virginia 32412 15817 16595 32412
7 Ada County 10 Idaho 456885 228715 228170 456885
8 Ada County 11 Idaho 469966 235266 234700 469966
9 Adair County 10 Iowa 7053 3503 3550 7053
10 Adair County 10 Kentucky 19294 9578 9716 19294
11 Adair County 10 Missouri 25306 12183 13123 25306
12 Adair County 10 Oklahoma 21981 10981 11000 21981
13 Adair County 11 Iowa 7063 3509 3554 7063
14 Adair County 11 Kentucky 19215 9508 9707 19215
15 Adair County 11 Missouri 25339 12194 13145 25339
16 Adair County 11 Oklahoma 22082 11015 11067 22082
17 Adams County 10 Colorado 504428 254651 249777 504428
18 Adams County 10 Idaho 4132 2129 2003 4132
19 Adams County 10 Illinois 66094 32521 33573 66094
20 Adams County 10 Indiana 35422 17683 17739 35422
OPの更新されたデータの例に基づいて、「STNAME」でグループ化するだけで済みます。
library(dplyr)
set2c %>%
group_by(STNAME) %>%
summarise(totalAll = sum(totalAll), avppop = mean(avgpop))
# A tibble: 11 x 3
# STNAME totalAll avppop
# <chr> <int> <dbl>
# 1 Colorado 504428 504428
# 2 Idaho 930983 310328.
# 3 Illinois 66094 66094
# 4 Indiana 35422 35422
# 5 Iowa 14116 7058
# 6 Kentucky 38509 19254.
# 7 Louisiana 124704 62352
# 8 Missouri 50645 25322.
# 9 Oklahoma 44063 22032.
#10 South Carolina 49101 24550.
#11 Virginia 64978 32489
新しい列の作成中に特定の列を選択する場合は、transmute
代わりにを使用してくださいsummarise
set2c %>%
group_by(STNAME) %>%
transmute(totalAll, totalAllSum = sum(totalAll), avppop = mean(avgpop))
# A tibble: 20 x 4
# Groups: STNAME [11]
# STNAME totalAll totalAllSum avppop
# <chr> <int> <int> <dbl>
# 1 South Carolina 24560 49101 24550.
# 2 South Carolina 24541 49101 24550.
# 3 Louisiana 62514 124704 62352
# 4 Louisiana 62190 124704 62352
# 5 Virginia 32566 64978 32489
# 6 Virginia 32412 64978 32489
# 7 Idaho 456885 930983 310328.
# 8 Idaho 469966 930983 310328.
# 9 Iowa 7053 14116 7058
#10 Kentucky 19294 38509 19254.
#11 Missouri 25306 50645 25322.
#12 Oklahoma 21981 44063 22032.
#13 Iowa 7063 14116 7058
#14 Kentucky 19215 38509 19254.
#15 Missouri 25339 50645 25322.
#16 Oklahoma 22082 44063 22032.
#17 Colorado 504428 504428 504428
#18 Idaho 4132 930983 310328.
#19 Illinois 66094 66094 66094
#20 Indiana 35422 35422 35422
set2c <- structure(list(CTYNAME = c("Abbeville County", "Abbeville County",
"Acadia Parish", "Acadia Parish", "Accomack County", "Accomack County",
"Ada County", "Ada County", "Adair County", "Adair County", "Adair County",
"Adair County", "Adair County", "Adair County", "Adair County",
"Adair County", "Adams County", "Adams County", "Adams County",
"Adams County"), YEAR = c(10L, 11L, 10L, 11L, 10L, 11L, 10L,
11L, 10L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 10L, 10L, 10L, 10L
), STNAME = c("South Carolina", "South Carolina", "Louisiana",
"Louisiana", "Virginia", "Virginia", "Idaho", "Idaho", "Iowa",
"Kentucky", "Missouri", "Oklahoma", "Iowa", "Kentucky", "Missouri",
"Oklahoma", "Colorado", "Idaho", "Illinois", "Indiana"), totalAll = c(24560L,
24541L, 62514L, 62190L, 32566L, 32412L, 456885L, 469966L, 7053L,
19294L, 25306L, 21981L, 7063L, 19215L, 25339L, 22082L, 504428L,
4132L, 66094L, 35422L), totalMale = c(11895L, 11868L, 30405L,
30342L, 15871L, 15817L, 228715L, 235266L, 3503L, 9578L, 12183L,
10981L, 3509L, 9508L, 12194L, 11015L, 254651L, 2129L, 32521L,
17683L), totalFemale = c(12665L, 12673L, 32109L, 31848L, 16695L,
16595L, 228170L, 234700L, 3550L, 9716L, 13123L, 11000L, 3554L,
9707L, 13145L, 11067L, 249777L, 2003L, 33573L, 17739L), avgpop = c(24560L,
24541L, 62514L, 62190L, 32566L, 32412L, 456885L, 469966L, 7053L,
19294L, 25306L, 21981L, 7063L, 19215L, 25339L, 22082L, 504428L,
4132L, 66094L, 35422L)), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13",
"14", "15", "16", "17", "18", "19", "20"))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加