R将导入的Excel数值从R因子转换回数值

R将导入的Excel数值从R因子转换回数值,r,excel,import,statistics,R,Excel,Import,Statistics,我正在尝试将Excel创建的.csv文件读入R。我尝试了许多建议,但没有一个完全适合我 以下是.csv文件中数据的外观,第一行是标题: recipe_type,State,Successes,Attempts paper,alabama ,586,3379 以下是导入.csv文件的my R命令: options( StringsAsFactors=F ) results<-read.csv("recipe results.csv", header=TRUE, as.is=T) resul

我正在尝试将Excel创建的.csv文件读入R。我尝试了许多建议,但没有一个完全适合我

以下是.csv文件中数据的外观,第一行是标题:

recipe_type,State,Successes,Attempts
paper,alabama ,586,3379
以下是导入.csv文件的my R命令:

options( StringsAsFactors=F )
results<-read.csv("recipe results.csv", header=TRUE, as.is=T)
results$Successes
[1] "586" 
选项(StringsAsFactors=F)

结果将一个因子直接转换为数值可以得到因子水平,而与数值本身无关。您需要先转换为字符:

results[,3] <- as.numeric(as.character(results$Successes))

将因子直接转换为数值将生成因子级别,而与值本身无关。您需要先转换为字符:

results[,3] <- as.numeric(as.character(results$Successes))

我发现这个软件包非常有用,除了一个警告:gdata之外,没有任何问题

此URL包含有关包的信息:


我确实将我的电子表格从.xlsx转换成了它所期望的.xls。我没有测试.xlsx是否可以工作。

我发现这个软件包非常有用,除了一个警告:gdata外,工作没有任何问题

此URL包含有关包的信息:


我确实将我的电子表格从.xlsx转换成了它所期望的.xls。我没有测试.xlsx是否有效。

意识到这是一个老问题,但今天遇到类似问题时遇到了它。 我最终发现(在我的例子中)问题源于Excel的“数字”格式在其值中包含一个逗号(,),因此:1000而不是1000。一旦我去掉逗号,我就可以从没有NA值的因子中转换

df$col1 <-as.numeric(gsub(",","",df$col1))

df$col1意识到这是一个老问题,但今天遇到类似问题时才发现。
我最终发现(在我的例子中)问题源于Excel的“数字”格式在其值中包含一个逗号(,),因此:1000而不是1000。一旦我去掉逗号,我就可以从没有NA值的因子中转换

df$col1 <-as.numeric(gsub(",","",df$col1))


df$col1要将系数转换为数值,您可以使用
as.numeric(results$successfuls)
。但是那列中似乎有一些非数值。嗨,DrDom:你的意思是这样的:results@MatthewLundberg,我知道,但根据选项
as.is=T
@Jazzmine,第三列应该是字符、数字或整数类型,您的示例对我很有用。通过调用
sapply(results,class)
@Jazzmine查看变量的类。请重新读取中的文件,然后粘贴
str(results)
dput(head(results))
的输出,这将帮助我们更好地理解问题。要将因子转换为数值,可以使用
as.numeric(结果$成功)
。但该列中似乎有一些非数值。您好,您的意思是:results@MatthewLundberg,我知道,但根据选项
as.is=T
@Jazzmine,第三列应该是字符、数字或整数类型,您的示例对我很有用。通过调用
sapply(结果,类)
@Jazzmine请重新读取文件,然后粘贴
str(结果)
dput(头部(结果))的输出
,这将帮助我们更好地理解问题。根据OP集合的选项,
results$successfuls
不应为factor类型?请解释为什么当
as.is=T
stringsAsFactors=F
时它会转换为factor?Matthew,您上面的第一个命令产生了以下结果中的错误$successfuls:$运算符对原子向量无效。@Jazzmine您确定没有矩阵吗?
类(结果)的输出是什么
?这可能是个问题,因为它不是一个数据帧?是的,它可能是个问题。但是根据给定的代码
结果
应该是一个
数据帧
。仔细查看实际代码。问题就在那里。根据选项集,
结果$successfuls
不应该是类型因子?请可以您解释了为什么当
as.is=T
stringsAsFactors=F
时它会转换为因子?Matthew,您上面的第一个命令产生了这样的结果:results中的错误$successfuls:$运算符对原子向量无效。@Jazzmine您确定没有矩阵吗?
类(results)的输出是什么
?这可能是问题所在,因为它不是一个data.frame?是的,它可能是问题所在。但是根据给定的代码
结果
应该是一个
data.frame
。仔细查看实际代码。问题就在那里。