R未正确总结定性数据

R未正确总结定性数据,r,R,在RGui和RStudio环境中,我在获取定性数据列的正确摘要时遇到问题。所讨论的数据是“统计学习导论,在R中的应用”()中的“自动”数据。“名称”列中的问题是我是否使用该书网站上的“Auto.csv”或“Auto.data”文件。有趣的是,RGui正确地描述了“马力”列,但RStudio没有。同样,两者都不能正确描述“name”列的特征。如能帮助纠正这种情况,我们将不胜感激 这里有两个不相关的问题。一个是马力的缺失值编码为“?”read.csv()然后将马力读取为字符向量,而不是数字向量。参数

在RGui和RStudio环境中,我在获取定性数据列的正确摘要时遇到问题。所讨论的数据是“统计学习导论,在R中的应用”()中的“自动”数据。“名称”列中的问题是我是否使用该书网站上的“Auto.csv”或“Auto.data”文件。有趣的是,RGui正确地描述了“马力”列,但RStudio没有。同样,两者都不能正确描述“name”列的特征。如能帮助纠正这种情况,我们将不胜感激


这里有两个不相关的问题。一个是
马力
的缺失值编码为“?”
read.csv()
然后将
马力
读取为字符向量,而不是数字向量。参数
na.strings=“?”
将解决此问题

另一个问题是,

R现在使用StringsAsAffactors=FALSE默认值,因此在对data.frame()和read.table()的调用中,默认情况下不再将字符串转换为因子

这样,省略
stringsAsFactors
的脚本在旧版本中将有不同的结果。在版本4.0.0之前,它将自动转换为因子,并且由于中的4.0.0将按照默认值读取为字符。如果要转换为因子,只需设置
stringsAsFactors=TRUE
。(或稍后使用
as.factor()
将其转换为因子)

这一变化背后的原因。在我看来,最令人信服的原因是自动转换为因子时的再现性问题

从字符向量创建因子时,如果未明确给出级别,则将为级别使用排序后的唯一值,当然排序结果取决于区域设置

因此,如果您希望转换为因子,并确保无论您的语言环境如何(即语言设置),相同的脚本都会产生相同的结果,建议手动转换为因子并显式设置级别

带和不带stringsAsFactors参数的示例
url分钟:9.00分钟:3.000分钟:68.0分钟:46.0分钟:1613
#>第一区:17.50第一区:4.000第一区:104.0第一区:75.0第一区:2223
#>中位数:23.00中位数:4.000中位数:146.0中位数:93.5中位数:2800
#>平均数:23.52平均数:5.458平均数:193.5平均数:104.5平均数:2970
#>第三区:29.00第三区:8.000第三区:262.0第三区:126.0第三区:3609
#>最大值:46.60最大值:8.000最大值:455.0最大值:230.0最大值:5140
#>安娜:5
#>加速年份原点名称
#>最小:8.00最小:70.00最小:1000福特平托:6
#>第一区:13.80第一区:73.00第一区:1.000 amc斗牛士:5
#>中位数:15.50中位数:76.00中位数:1000福特maverick:5
#>平均值:15.56平均值:75.99平均值:1.574丰田花冠:5
#>第三节:17.10第三节:79.00第三节:2.000 amc小精灵:4
#>最大:24.80最大:82.00最大:3.000 amc大黄蜂:4
#>(其他):368
df_管柱mpg气缸排量马力重量
#>分钟:9.00分钟:3.000分钟:68.0分钟:46.0分钟:1613
#>第一区:17.50第一区:4.000第一区:104.0第一区:75.0第一区:2223
#>中位数:23.00中位数:4.000中位数:146.0中位数:93.5中位数:2800
#>平均数:23.52平均数:5.458平均数:193.5平均数:104.5平均数:2970
#>第三区:29.00第三区:8.000第三区:262.0第三区:126.0第三区:3609
#>最大值:46.60最大值:8.000最大值:455.0最大值:230.0最大值:5140
#>安娜:5
#>加速年份原点名称
#>最小:8.00最小:70.00最小:1.000长度:397
#>第一区:13.80第一区:73.00第一区:1.000类别:字符
#>中位数:15.50中位数:76.00中位数:1.000模式:字符
#>平均数:15.56平均数:75.99平均数:1.574
#>第三区:17.10第三区:79.00第三区:2.000
#>最大值:24.80最大值:82.00最大值:3.000
#> 

由(v1.0.0)

根据您编写的内容于2021-03-21创建,在第一次尝试(Rstudio)中,您没有将
na.string=“?”
传递给read.csv()函数,它将马力列作为字符向量而不是数字来读取。如果您复制代码和输出而不是屏幕截图,那会更好。嗨,Marcelo,谢谢您的关注。运行此操作时,“name”列是否正确求解?再次感谢。我相信
名称
栏没有问题。我无法访问与您相同的数据,但可以看到编辑后的答案。也许您可以设置
stringsAsFactors=TRUE
,以便将字符串(字符)变量转换为因子。(请注意,在R4.0之前,stringAsFactors在默认情况下为TRUE,此后为FALSE。是否
stringsAsFactors=TRUE
na.string=“?”
解决问题?我认为R4.0发布后默认stringsAsFactors的变化是导致问题的原因。本书的当前版本是2017年出版的。我会在有机会时修改代码。我认为
stringsAsFactors
是更接近的问题:也许你可以对此发表评论(以及R=4.0中的不同默认值)在您的答案中?完成了!我相信现在它更好地解决了问题。您是否认为稍微编辑一点问题是一个好主意,以便更多面临此问题的人找到此类答案??(我仍然有点不确定编辑其他人问题的礼仪:)