已将csv数据集导入到R,但值变为因子

已将csv数据集导入到R,但值变为因子,r,r-factor,read.csv,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 setwd(“c:/kalle/R”) stuckey数据导入功能(此处:read.csv())和全局选项都提

我对R非常陌生,访问导入的数据集时遇到问题。我使用的是RStudio,在导入csv文件时使用了导入数据集功能,并将行从控制台窗口粘贴到源窗口。代码如下所示:

setwd("c:/kalle/R")
stuckey <- read.csv("C:/kalle/R/stuckey.csv")
point <- stuckey$PTS
time <- stuckey$MP
setwd(“c:/kalle/R”)

stuckey数据导入功能(此处:
read.csv()
)和全局选项都提供了一个选项,您可以说
stringsAsFactors=FALSE
,这应该可以解决这个问题。

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

数据集中的PTS和MP变量似乎包含非数字,这就是为什么会得到意外的结果。您可以使用强制将这些变量设置为数字

point <- as.numeric(as.character(point))
time <- as.numeric(as.character(time))

point您可以使用
选项(stringsAsFactors=F)

然后按如下方式读取文件:
my.tab导入csv数据文件时,导入命令应反映每列(;)之间的数据分隔以及数值的浮点数分隔符(对于数值变量=2,5,这将是“,”)

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

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

stuckey我也是R新手,面临着完全相同的问题。但后来我查看了我的数据,发现这是由于我的csv文件在所有数字列中使用了逗号分隔符(,)(例如:1233444.56而不是1233444.56)

我删除了csv文件中的逗号分隔符,然后重新加载到R中。我的数据框现在将所有列识别为数字


我确信在read.csv函数本身中有一种方法可以处理这个问题。

这只在
read.csv
命令中包含
strip.white=TRUE
时对我有效


(我找到了解决方案。)

对我来说,解决方案是包含skip=0 (文件顶部要跳过的行数。可设置为>0)


mydata这些答案都没有提到
colClasses
参数,这是在
read.csv
中指定变量类的另一种方法

 stuckey <- read.csv("C:/kalle/R/stuckey.csv", colClasses = "numeric") # all variables to numeric

我不认为
stringsAsFactors
在这种情况下会有所帮助,因为它所做的只是控制字符到因子的转换。它不影响read.csv是将列作为数字还是字符导入,这是根本问题。此外,
stringAsFactor=FALSE
通常会将格式强制为字符,这与此处必须实现的正好相反。我不推荐此解决方案,因为它实际上只是转换为字符,绝对没有意义。最好用
选项('stringsAsFactors'=FALSE)
全局设置合理的默认值,这样你就不会忘记。你和我都不知道这一点,因为问题是没有数据集可以实际验证。因此,如果你基于这一点投了反对票,那你就错了。无论如何,我不明白为什么人们对一个八年前的答案如此兴奋。我们在其他时间阅读了数亿次数据,有时甚至用一个。没有它,我们所做的只是猜测。请参见这里的
factor2numeric
:是。这应该被接受。另一个答案没有进行任何正确的转换。正如Hong Ooi提到的,您可能有不应该使用的非数字值。尝试查看数据(例如,使用
View(stuckey)
)查看问题所在。您好,我有一个大文件,比如54000*200维数据,是以csv格式编写的。我已经读取了java文件中的数据,在转换为Double时没有任何异常。但是,在读R的时候,我遇到了同样的问题。我尝试了这里发布的方法,但没有成功。PS:我对Rcareful的案例不太熟悉:“stringsAsFactors”不是“stringsAsFactors”,或者你可以简单地在函数中添加选项:
my.tab我喜欢选项方法,因为它可以用于其他读取,如read\u rds。我不想再提
read.delim()
,它只不过是
read.csv(…sep=“\t”)的一个薄包装而已
。否则这个答案就是这个问题的最佳答案。OP专门使用了
read.csv()
(这也是
read.table(…sep=',')的一个薄包装器)
stuckey <- read.csv("C:/kalle/R/stuckey.csv", colClasses = c("PTS" = "numeric", "MP" = "numeric") # specific columns to numeric
stuckey <- read.csv("C:/kalle/R/stuckey.csv", colClasses = "character")
point <- as.numeric(stuckey$PTS)
time <- as.numeric(stuckey$MP)