我知道在这个网站上有类似的问题,但是,他们似乎都没有充分回答我的问题.
这是我到目前为止所做的:
我有一个csv文件,我在excel中打开.我以代数方式操纵列以获得新的列"A".我将文件导入R使用read.csv()
,并将A列中的条目存储为因子 - 我希望它们存储为数字.我在这个主题上找到了这个问题:
根据建议,我stringsAsFactors = FALSE
作为参数包含read.csv()
,但是,正如Hong Ooi在上面链接的页面中建议的那样,这不会导致A列中的条目存储为数值.
可能的解决方案是使用以下页面中给出的建议:
但是,我想要一个更清晰的解决方案,即导入文件的方法,以便列条目的条目存储为数值.
欢呼任何帮助!
Ric*_*rta 33
无论你在Excel中用什么代数来创建新列,都可以在R中更有效地完成.
请尝试以下操作:将原始文件(在任何excel操作之前)读入R中read.csv(... stringsAsFactors=FALSE)
.[如果这不起作用,请看一下?read.table
(read.csv
包装),但可能还有其他一些潜在的问题].
例如:
delim = "," # or is it "\t" ?
dec = "." # or is it "," ?
myDataFrame <- read.csv("path/to/file.csv", header=TRUE, sep=delim, dec=dec, stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)
然后,假设您的数字列是第4列
myDataFrame[, 4] <- as.numeric(myDataFrame[, 4]) # you can also refer to the column by "itsName"
Run Code Online (Sandbox Code Playgroud)
NC *_*Jim 13
在read.table
(及其亲属)中,它是na.strings
指定哪些字符串被解释为缺失值的参数NA
.默认值为na.strings = "NA"
如果否则数值变量列中的缺失值被编码为除" NA
" 之外的其他内容,例如" .
"或" N/A
",则这些行将被解释为character
,然后将整个列转换为character
.
因此,如果您的缺失值不是" NA
",则需要指定它们na.strings
.
小智 5
如果您要处理大型数据集(即,具有大量列的数据集),则上述解决方案可能会很麻烦,并且需要先知道哪些列是数字的。
试试这个吧。
char_data <- read.csv(input_filename, stringsAsFactors = F)
num_data <- data.frame(data.matrix(char_data))
numeric_columns <- sapply(num_data,function(x){mean(as.numeric(is.na(x)))<0.5})
final_data <- data.frame(num_data[,numeric_columns], char_data[,!numeric_columns])
Run Code Online (Sandbox Code Playgroud)
该代码执行以下操作:
通过保留原始列的数据类型(如字符和数字),这实际上可以自动导入.csv文件。