int*_*ael 17 csv r read.table
我正在尝试将Excel创建的.csv文件读入R,其中所有向量(CSV文件中的列)都是数字.但是,每次导入它们时它们都会转换为因子.
以下是我的CSV的示例:

这是我的代码:
options(StringsAsFactors=F)
data<-read.csv("in.csv",dec=",",sep=";")
Run Code Online (Sandbox Code Playgroud)
如你所见,我负责将de dec设置为","并将sep设置为";".但是,所有应该是数字的向量都是因子!
有人可以给我一些建议吗?谢谢!
Hen*_*rik 12
您NA在CSV文件中的字符串,N/A被解释为character,然后整列转换character.如果您具有stringsAsFactors = TRUEin options或in read.csv(默认),则该列将进一步转换为factor.您可以使用参数na.strings来判断read.csv应将哪些字符串解释为NA.
一个小例子:
df <- read.csv(text = "x;y
N/A;2,2
3,3;4,4", dec = ",", sep = ";")
str(df)
df <- read.csv(text = "x;y
N/A;2,2
3,3;4,4", dec = ",", sep = ";", na.strings = "N/A")
str(df)
Run Code Online (Sandbox Code Playgroud)
更新以下评论
虽然从提供的样本数据中看不出来,但是'$'与数字连接的实例也存在问题,例如'$ 3,3'.这些值将被解释为character,然后对dec = ","我们没有帮助.在变量转换为数字之前,我们需要替换'$'和','.
df <- read.csv(text = "x;y;z
N/A;1,1;2,2$
$3,3;5,5;4,4", dec = ",", sep = ";", na.strings = "N/A")
df
str(df)
df[] <- lapply(df, function(x){
x2 <- gsub(pattern = "$", replacement = "", x = x, fixed = TRUE)
x3 <- gsub(pattern = ",", replacement = ".", x = x2, fixed = TRUE)
as.numeric(x3)
}
)
df
str(df)
Run Code Online (Sandbox Code Playgroud)
您可能已经使原始代码真正可以工作了-有一个很小的错字(“ stringsAsFactors”,而不是“ StringsAsFactors”)。options命令不会抱怨输入错误的文本,但它不会起作用。正确完成后,它将读取为char而不是factor。然后,您可以将列转换为所需的任何格式。