我是这个论坛和R的新手。我正在进行一项生态研究,并使用人口普查数据在华盛顿州开发一个按邮政编码划分的数据集,其中包含以下变量:;total_pop"中位年龄"中位年龄男性"中位年龄女性"全流行男"总流行女性"白色"黑色"american indian/alskan""亚洲人"土生土长的夏威夷人"其他种族"2+种族";。我使用我在网上找到的一个名为tidycensus的软件包从ACS 5年评估数据集中获取数据,我遇到了几个问题,我希望你能帮助我。
我的主要问题是数据集没有按照我的喜好进行配置。我曾设想过,数据集将有一个输出,邮政编码是行,列是变量,这样每个邮政编码都将有14个相关的变量。例如,对于2018年的给定邮政编码(12345(,我希望使用(顶部(配置,而不是我目前使用的底部配置。所需配置
这是我捕获的当前数据的一个示例。【当前数据集】2
我遇到的另一个问题是,包中的get_acs函数不能给我特定州的邮政编码,但不能给我整个美国的邮政编码——所以我的数据集目前有我不需要的大部分邮政编码。如果我要找到华盛顿州的所有邮政编码,有没有办法只包括华盛顿州特有的邮政编码。感谢大家提前提供的帮助,我想重申,我肯定是R领域的新手,因此非常感谢任何/所有的帮助。
您的主要问题是从长数据集到宽数据集。
首先,您可以直接在get_acs()
函数中重命名变量,因为退出变量代码可能很困难。
country <- get_acs(geography = "zcta",
# Include and rename desired variables here
variables = c(totPop = "B01003_001",
medAge = "B01002_001"),
year = 2018)
然后,我将数据细分为仅包括华盛顿州邮政编码(98001-99403(。我还删除了error列的margin,因为它使spread()
函数变得奇怪。希望你不需要它。
wa <- country %>%
filter(GEOID >= 98001 & GEOID <= 99403) %>%
select(-moe)
最后,此步骤是使用tidyr包中的spread()
函数将长数据集转换为宽数据集。
wide_wa <- wa %>%
spread(variable, estimate)
希望你能得到这样的东西。