导入R中的csv文件的数值问题

时间:2014-03-27 17:43:05

标签: r csv

通常,我从Excel导入.csv文件。由于我将执行一些计量经济学回归,我不仅仅导入值,而是导入一些带有标签的列。

df <- read.csv("peasantsworkalot.csv", header=TRUE)

其中df如下所示

country <- c("AT", "AT", "AT", "AT")
code <- c("AT1", "AT1", "AT2", "AT2")
c <- c("Village1", "Village1", "Village2", "Village2")
d <- c("Year1", "Year1", "Year2", "Year2")
e <- c(65322.09, 62322.01, 84561.06, 86000.02)
df <- cbind(country,code,c,d,e)
df

[1,] "AT" "AT1" "Village1" "Year1" "65322.09"
[2,] "AT" "AT1" "Village1" "Year1" "62322.01"
[3,] "AT" "AT2" "Village2" "Year2" "84561.06"
[4,] "AT" "AT2" "Village2" "Year2" "86000.02"

每当我尝试使用e列中的值进行任何操作时,都会收到以下消息:

[1] NA
Warning message:
In Ops.factor( ):
  + not meaningful for factors

我认为,由于某种原因,它将值读取为非数字。所以我试过

as.numeric(df) 

as.numeric(df[,5])

第一个不起作用并给出

  

错误:(列表)对象无法强制键入&#39; double&#39;

第二个有效,但它改变了值。例如65322.09变为259,我不知道出于什么原因。 第一次发生这种情况,而不是任何.csv文件。有些人工作正常。

3 个答案:

答案 0 :(得分:2)

read.csv功能中包含此read.csv("readThis.csv", stringsAsFactors=FALSE)。另请阅读评论中的信息。你绝对应该提高你的知识水平。

答案 1 :(得分:1)

要将列转换为数字,您可以运行:

df[,5] <- as.numeric(df[,5])

但是,如果该列是一个因素,则会导致意外结果(请参阅help("factor"))。因此,如果它是一个因子列,最直接的方法是首先将其转换为字符,然后再转换为数字:

df[,5] <- as.numeric(as.character(df[,5]))

答案 2 :(得分:0)

如果.csv文件包含NA,例如...格式,则read.csv函数必须包含read.csv("readThis.csv", na.string="...")。这将保留.csv文件中的数值。否则,它们将切换为非数字。