r - 为什么我使用 pivot_longer 得到“要替换的项目数不是替换长度的倍数”?
问题描述
我正在尝试将 PL94171 包中的数据重新划分为长格式,并且在重塑数据时遇到了一些麻烦。
我希望将 pop_black、pop_asian 等重新整形为长格式,其中值存储在人口下,种族存储在变量“种族”下。
这是我尝试过的代码,但我不断收到“要替换的项目数不是替换长度的倍数”。
library(PL94171)
pl_path = system.file("extdata/ri2018_2020Style.pl", package="PL94171")
(RI_tbl <- pl_tidy_shp("RI", pl_path))
GEOID state county vtd pop pop_hisp pop_white pop_black pop_aian pop_asian pop_nhpi pop_other
<chr> <chr> <chr> <chr> <int> <int> <int> <int> <int> <int> <int> <int>
1 4400700~ RI Providen~ 4428~ 0 0 0 0 0 0 0 0
2 4400700~ RI Providen~ 4428~ 0 0 0 0 0 0 0 0
3 4400700~ RI Providen~ 4428~ 0 0 0 0 0 0 0 0
4 4400700~ RI Providen~ 4428~ 50 0 50 0 0 0 0 0
RI_tbl %>% select(starts_with("pop_")) %>%
tidyr::pivot_longer(
cols = starts_with("pop_"),
names_to = "race",
names_prefix = "pop_",
values_to = "population",
values_drop_na = TRUE,
)
解决方案
如果我们将其转换为tibble
,则警告将消失,因为sf
类属性正在创建问题,然后重新转换回sf
library(dplyr)
library(tidyr)
library(sf)
RI_tbl %>%
select(starts_with("pop_")) %>%
as_tibble %>%
tidyr::pivot_longer(
cols = starts_with("pop_"),
names_to = "race",
names_prefix = "pop_",
values_to = "population",
values_drop_na = TRUE,
) %>%
st_as_sf
-输出
Simple feature collection with 4552 features and 2 fields (with 112 geometries empty)
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -71.43177 ymin: 41.77241 xmax: -71.36969 ymax: 41.82055
Geodetic CRS: NAD83
# A tibble: 4,552 x 3
geometry race population
<MULTIPOLYGON [°]> <chr> <int>
1 (((-71.3975 41.80041, -71.39571 41.80164, -71.39563 41.80158, -71.39547 41.80169, -7... hisp 0
2 (((-71.3975 41.80041, -71.39571 41.80164, -71.39563 41.80158, -71.39547 41.80169, -7... white 0
3 (((-71.3975 41.80041, -71.39571 41.80164, -71.39563 41.80158, -71.39547 41.80169, -7... black 0
4 (((-71.3975 41.80041, -71.39571 41.80164, -71.39563 41.80158, -71.39547 41.80169, -7... aian 0
5 (((-71.3975 41.80041, -71.39571 41.80164, -71.39563 41.80158, -71.39547 41.80169, -7... asian 0
6 (((-71.3975 41.80041, -71.39571 41.80164, -71.39563 41.80158, -71.39547 41.80169, -7... nhpi 0
7 (((-71.3975 41.80041, -71.39571 41.80164, -71.39563 41.80158, -71.39547 41.80169, -7... other 0
8 (((-71.3975 41.80041, -71.39571 41.80164, -71.39563 41.80158, -71.39547 41.80169, -7... two 0
9 (((-71.39929 41.79935, -71.39922 41.79938, -71.39915 41.79941, -71.39895 41.79949, -... hisp 0
10 (((-71.39929 41.79935, -71.39922 41.79938, -71.39915 41.79941, -71.39895 41.79949, -... white 0
# … with 4,542 more rows
推荐阅读
- cross-compiling - 如何解决mingw-w64不支持参数:-undefined dynamic_lookup
- php - 用 PHP 从 JSON 中提取数据?
- java - 在自定义对象上使用优先级队列的更好方法
- android - 如何在 kotlin 的 android studio 中制作折线图
- r - RStudio 会话在运行 nloptr 时崩溃
- python - 使用带有小数点的`pandas.to_timedelta`
- r - 如何将不带双引号的表/数据框中的字符数据保存为 R 中的 csv 或 txt 文件?
- c# - DynamoDB - 如何使用 ServiceStack.Aws 实现乐观锁定
- c++ - += 运算符后 std::string::begin() 迭代器是否无效?
- python - 循环遍历数据框只返回一列