楼主: cabcino0602
4647 3

[问答] 【求助】R作图报错Error in Ops.factor level sets of factors are different [推广有奖]

  • 0关注
  • 0粉丝

硕士生

2%

还不是VIP/贵宾

-

威望
0
论坛币
70 个
通用积分
0
学术水平
0 点
热心指数
2 点
信用等级
1 点
经验
2184 点
帖子
107
精华
0
在线时间
124 小时
注册时间
2009-6-9
最后登录
2017-3-21

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
学习制作如图所示的社交热点示意图,加载完相应的包和数据后(> library(maps)> library(geosphere)),按照所学视频的指示,编写如下脚本进行执行。报错!
提示内容为:Error in Ops.factor(airports$iata, fsub[j, ]$airport1) :   level sets of factors are different
猜测是:air1 <- airports[airports$iata == fsub[j,]$airport1,] 此句语法不对;还是由于是在for语句嵌套下导致原本正确的数据截取语句发生了错误?请大家帮忙看看呢。万分感谢!


【PS】由于上传后发现美元符号发生了变形,故将脚本文件放置在了附件内。



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Different factors factor DIFFER Facto different factors Error

QQ截图20170303153620.jpg (22.38 KB)

QQ截图20170303153620.jpg

23.jpg (29.76 KB)

23.jpg

脚本.txt

406 Bytes

沙发
yeliyarose 发表于 2019-10-27 20:00:22 |只看作者 |坛友微信交流群
估计你使用read.csv()出了问题。
#在线数据装载
airports<-read.csv("http://datasets.flowingdata.com/tuts/maparcs/airports.csv",header=TRUE)
flights<-read.csv("http://datasets.flowingdata.com/tuts/maparcs/flights.csv",header=TRUE,as.is=TRUE)

将上面的航空数据保存到工作目录:
write.csv(airports,file="airports.csv")
write.csv(flights,file="flights.csv")

由上述代码可以看出,
    1. header是指定是否原文件是否包含列名, read.table默认值为FALSE, read.csv默认值为TRUE. 值得注意的是a.txt文件包含列名, 但是用read.table读取时使用了默认参数FALSE, 没有出错的原因在于: 在没指定header参数时, 如果第一行的元素比其他行的元素少一个, 自动将header参数设置为TRUE.
    2. sep是用来指定分隔符的. 默认值为"", 表示1个或多个空格, tab键, 新的一行, 回车键. read.csv默认值为",".
    3. quote用来指定包围字符型变量的符号, 读入后自动将其剔除. read.table默认值为"\"'", read.csv默认值为"\"", 故为了保留a与"a"的差别, 将quote设置为"".
    4. row.names用于指定行名, 如果是数值k时, 则将第k列设为列名, 并将其从数据中移除. 值得注意的是a.txt文件包含行名, 但是用read.table默认不设置row.names参数, 没有出错的原因在于: 在没指定row.names参数时, 如果第一行的元素比其他行的元素少一个, 自动将row.names参数设置为1.
这正是您遇到的问题。如果您键入 airports$iata, fsub[j, ]$airport1,您将看到第一个有因子级别 假如“abc” ,而第二个因子级别 “abd” - 因此出现错误消息。
所以,你要读取本地的csv数据,则应该写成:
setwd("airport_data")
airports <- read.csv("airports.csv",header=TRUE)
flights<-read.csv("flights.csv",header=TRUE,as.is=TRUE)

使用道具

藤椅
yeliyarose 发表于 2019-10-27 20:28:39 |只看作者 |坛友微信交流群
关键的关键是:永远记住 as.is = TRUE
stringsAsFactors = FALSE

使用道具

板凳
我学的统计 学生认证  发表于 2020-7-13 15:26:59 |只看作者 |坛友微信交流群
我知道问题是什么 - 您需要阅读数据 ,通过将参数 as.is = TRUE 添加到 read.csv 命令(您可能用于加载一切都在)。没有这个,字符串被存储为因子,并且上面提到的所有方法都将失败(正如你已经发现的那样!)

一旦你正确读入数据,你可以使用
这些函数了

我原来也是跟你一样,读入数据时加入了as.is=TRUE,后面就不出现“因子水平不同”的报错了
具体解释过程和内容,可参考下面链接
https://www.it1352.com/605549.html


已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 30 + 3 + 3 + 3 精彩帖子

总评分: 论坛币 + 30  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-6-19 17:02