通常,我从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文件。有些人工作正常。
答案 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文件中的数值。否则,它们将切换为非数字。