ESS调查数据分析求助:数据格式转换与筛选报错问题
解决R中"object 'cntry' not found"错误
问题根源
你执行read.csv时设置了header = FALSE,这会让R自动将数据框的列名设为V1、V2、V3...这类默认名称,而不是CSV文件里的cntry、basinc等变量名,所以filter和select找不到对应的列。
解决步骤
确认数据列名
先运行以下命令查看当前数据框的列名,验证是否是默认的V开头命名:colnames(ESS8)也可以通过
View(ESS8)查看,确认第一行是否是实际的变量名(ESS调查数据的CSV通常第一行就是变量名)。正确读取数据
如果你的CSV文件第一行就是变量名(包含cntry、basinc),修改读取代码,把header = FALSE改为header = TRUE:ESS8 <- read.csv("ESS8_num.csv", header = TRUE)手动指定列名(若CSV无表头)
如果CSV确实没有表头,你需要对照ESS数据的变量手册,手动给数据框设置列名。比如已知第5列是cntry,第20列是basinc,可按如下方式设置:# 替换为实际的变量名列表,确保顺序和CSV列一致 colnames(ESS8) <- c("var1", "var2", "var3", "var4", "cntry", ..., "basinc", ...)重新运行筛选代码
完成列名修正后,再次执行筛选代码即可:LT <- ESS8 %>% filter(cntry == "LT") %>% select(basinc)
额外提示
install.packages()只需运行一次,后续使用包时直接用library()加载即可,无需重复安装。
内容的提问来源于stack exchange,提问作者Hele S
相关产品推荐
相关产品推荐

