我在csv文件中有数据。当我阅读它时,这些列处于因子水平,因此无法进行任何计算。
我用过
as.numeric(df$variablename)
,但它为变量呈现了完全不同的数据集。
original data in the variable: 2961,488,632,
as.numeric output: 1,8,16
答案 0 :(得分:3)
使用read.table
读取数据时,您可以
sep =
,dec =
,NA
字符看起来像na.strings =
stringsAsFactors = F
在您的情况下,您可以使用类似以下内容的
:read.table("mycsv.csv", header = T, sep = ",", dec = ".", stringsAsFactors = F,
na.strings = c("", "-"))
答案 1 :(得分:2)
除了Cettt的回答,还有colClasses
。
如果您预先知道csv文件具有的列的数据类型,则可以指定此类型。这使R不再“猜测”数据类型是什么,并让您知道什么时候不正确,而不是确定它必须是字符串。例如如果您的4列csv文件包含“文本”,“因子”,“整数”和“数字”列,则可以使用
read.table("mycsv.csv", header = T, sep = ",", dec = ".",
colClasses=c("character", "factor", "integer", "numeric"))
正如gersht所指出的,该问题很可能是数字栏中的一些非数字。通常,这可以是值NA的编码方式。指定colClasses
会使R在遇到任何这样的“非数字或NA”值时发出错误消息,因此您可以轻松地看到问题。如果它是NA的非默认编码,请使用参数na.strings = c("NA", "YOUR NA VALUE")
。如果这是另一个问题,则可能必须在导入之前修复文件。例如:
read.table(sep=",",
colClasses=c("character", "numeric"),
text="
cat,11
canary,12
dog,1O") # NB not a 10; it's a 1 and a capital-oh.
给予
扫描错误(文件=文件,什么=什么,九月=九月,引用=引用,十二月=十二月, scan()预期为“真实”,为“ 1O”