使用R语言gender包指定年份范围报错的技术求助
解决gender包中gender_df函数的年份参数错误问题
我来帮你搞定这个报错~你遇到的Error: year_col %in% names(data) are not all TRUE是因为对gender_df的参数理解有点偏差,咱们一步步理清楚:
错误原因
year_col参数的作用是指定你的数据框中存储年份信息的列名,比如如果你的数据里有一列叫birth_year,每个名字对应不同的出生年份,那才需要用year_col = "birth_year"。而你直接传了c("1932","2012"),函数会去names_df里找名为"1932"和"2012"的列,显然你的数据框里没有这两列,所以就报错了。
正确的用法
你现在的需求是给所有名字统一指定一个年份范围(1932到2012),这时候应该用**years参数**,而不是year_col。修改后的代码如下:
myData <- read.csv("Firstnames.csv", header = TRUE) names_df <- data_frame(names = myData$First.Name, stringsAsFactors = FALSE) # 使用years参数指定统一的年份范围,注意这里传数值型向量,不是字符串 gender_df(names_df, method = "ssa", name_col = "names", years = c(1932, 2012))
额外说明
如果之后你有每个名字对应的不同年份数据(比如数据框里新增一列birth_year),那时候可以结合year_col和years使用,示例如下:
# 假设names_df新增了birth_year列 gender_df(names_df, method = "ssa", name_col = "names", year_col = "birth_year", years = c(1932, 2012))
这种用法会让函数参考每个名字对应的birth_year,同时限制在1932-2012的范围内。
内容的提问来源于stack exchange,提问作者wag
相关产品推荐
相关产品推荐

