全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
5143 3
2017-03-03
学习制作如图所示的社交热点示意图,加载完相应的包和数据后(> 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】由于上传后发现美元符号发生了变形,故将脚本文件放置在了附件内。



附件列表
QQ截图20170303153620.jpg

原图尺寸 22.38 KB

QQ截图20170303153620.jpg

23.jpg

原图尺寸 29.76 KB

23.jpg

脚本.txt

大小:406 Bytes

 马上下载

二维码

扫码加我 拉你入群

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

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

全部回复
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)
二维码

扫码加我 拉你入群

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

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

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


二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群