如何解决无法通过 CountryCode 将国家转换为大陆
library(tidyverse)
library(readr)
library(countrycode)
library(stringr)
B07 <- read_csv("Downloads/BorderData/BorderApprehension2007.csv")
B08 <- read_csv("Downloads/BorderData/BorderApprehension2008.csv")
B07[is.na(B07)] = 0
B08[is.na(B08)] = 0
# and so on...
B07$CITIZENSHIP <- str_to_title(B07$CITIZENSHIP)
B07$continent <- countrycode(sourcevar = B07[,"CITIZENSHIP"],origin = "country.name",destination = "continent")
我想指定一个大陆而不是国家的名称,但我一直遇到这个错误...
国家代码错误(sourcevar = B07[,: sourcevar 必须是字符或数字向量。当用户传递tibble(例如,来自dplyr)时,通常会出现此错误而不是来自 data.frame 的列向量(即 my_tbl[,2] vs. my_df[,2] vs. my_tbl[2])
这是我的数据图像:
解决方法
正如错误所说:“sourcevar 必须是字符或数字向量。当用户传递 tibble(例如,来自 dplyr)而不是来自 data.frame(即 my_tbl[,2 ] vs. my_df[,2] vs. my_tbl[[2]])"
看看 B07[,"CITIZENSHIP"]
与 B07[["CITIZENSHIP"]]
或 B07$CITIZENSHIP
的结果之间的差异
library(tibble)
library(countrycode)
B07 <- tibble(CITIZENSHIP = c("United States","Canada","Mexico"))
countrycode(sourcevar = B07[,"CITIZENSHIP"],origin = "country.name",destination = "continent")
#> Error in countrycode(sourcevar = B07[,: sourcevar must be a character or numeric vector. This error often
#> arises when users pass a tibble (e.g.,from dplyr) instead of a
#> column vector from a data.frame (i.e.,my_tbl[,2] vs. my_df[,2]
#> vs. my_tbl[[2]])
countrycode(sourcevar = B07[["CITIZENSHIP"]],destination = "continent")
#> [1] "Americas" "Americas" "Americas"
countrycode(sourcevar = B07$CITIZENSHIP,destination = "continent")
#> [1] "Americas" "Americas" "Americas"
B07[,"CITIZENSHIP"]
#> # A tibble: 3 x 1
#> CITIZENSHIP
#> <chr>
#> 1 United States
#> 2 Canada
#> 3 Mexico
B07[["CITIZENSHIP"]]
#> [1] "United States" "Canada" "Mexico"
B07$CITIZENSHIP
#> [1] "United States" "Canada" "Mexico"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。