将csv-dataset导入R但值变为因子

Joe*_*Joe 60 r r-factor read.csv

我是R的新手,我无法访问我导入的数据集.我正在使用RStudio并在导入我的csv文件时使用了导入数据集功能,并将该行从控制台窗口粘贴到源窗口.代码如下:

setwd("c:/kalle/R")
stuckey <- read.csv("C:/kalle/R/stuckey.csv")
point <- stuckey$PTS
time <- stuckey$MP
Run Code Online (Sandbox Code Playgroud)

但是,数据不是我所习惯的整数或数字,而是因素,所以当我尝试绘制变量时,我只得到直方图,而不是通常的情节.当检查数据时,它似乎是有序的,只是我无法使用它,因为它是因子形式.

Dir*_*tel 63

数据导入功能(此处read.csv():)以及全局选项都可以说明stringsAsFactors=FALSE应该解决这个问题.

  • 在这种情况下,我不认为`stringsAsFactors`会有所帮助,因为它所做的就是控制字符到因子的转换.它不会影响read.csv是否将列作为数字或字符导入,这是潜在的问题. (15认同)
  • 而且,`stringAsFactor = FALSE`通常会强制格式化为一个字符,这与此处必须实现的完全相反. (4认同)
  • 你和我都不知道,因为这个问题没有数据集实际上是 _verifiable_。因此,如果您因此而拒绝投票,那么您就做错了。无论如何,我不明白为什么人们对_一个八岁的答案_如此兴奋。其他时候我们涵盖了无数次读取数据,有时甚至使用 [mcve](https://stackoverflow.com/help/mcve)。没有它,我们所做的就是猜测。 (2认同)

Hon*_*Ooi 28

默认情况下,read.csv检查数据的前几行以查看是否将每个变量视为数字.如果它找到非数字值,则假定变量是字符数据,并且字符变量转换为因子.

看起来数据集中的PTS和MP变量包含非数字,这就是您获得意外结果的原因.您可以将这些变量强制为数字

point <- as.numeric(as.character(point))
time <- as.numeric(as.character(time))
Run Code Online (Sandbox Code Playgroud)

但是任何无法转换的值都将丢失.(R FAQ给出了一个稍微不同的因子 - >数字转换方法,但我永远不记得它是什么.)


Sam*_*Sam 20

您可以为所有read.csv/read.*命令 全局设置 options(stringsAsFactors=F)

然后按如下方式读取文件: my.tab <- read.table( "filename.csv", as.is=T )

  • 小心案例:'stringsAsFactors'不是'StringsAsFactors' (8认同)

小智 5

导入csv数据文件时,import命令应反映每列(;)和数值的float-number分隔符之间的数据分隔(对于数值变量= 2,5,这将是",").

因此,导入csv的命令必须更加全面,包含更多命令:

    stuckey <- read.csv2("C:/kalle/R/stuckey.csv", header=TRUE, sep=";", dec=",")
Run Code Online (Sandbox Code Playgroud)

这应该将所有变量导入为整数或数字.