在R中从CSV创建年龄别背景死亡率向量时遇列不存在错误的排查
问题分析与解决
错误原因
- 列名大小写不匹配:R对大小写敏感,你的CSV中列名是
Total(首字母大写),但代码里写的是select(total)(全小写),系统找不到对应列。 - CSV读取参数错误:你的CSV用分号
;作为分隔符,而read.csv默认用逗号,分隔,直接读取会把整行当成一列,自然识别不出Total列;另外CSV里的小数用逗号,表示,R默认识别点.,不指定的话死亡率数值会变成字符类型,无法正常计算。
修正后的代码
# 正确读取CSV,指定分隔符和小数符号 Mortality_2022 <- read.csv("C:/mortality.csv", sep = ";", dec = ",") # 提取Total列转为向量(注意列名首字母大写) v_mort <- Mortality_2022 %>% # filter(Age >= age & Age <= n_age_max) %>% # 如需过滤年龄可取消注释 select(Total) %>% as.matrix()
其他实现方法(基础R方式,无需dplyr)
# 读取数据 Mortality_2022 <- read.csv("C:/mortality.csv", sep = ";", dec = ",") # 提取Total列转为向量 v_mort <- as.matrix(Mortality_2022$Total) # 如果需要过滤年龄: # v_mort <- as.matrix(Mortality_2022[Mortality_2022$Age >= age & Mortality_2022$Age <= n_age_max, "Total"])
内容的提问来源于stack exchange,提问作者aaPe
相关产品推荐
相关产品推荐

