我从.csv文件导入数据并附加数据集。
我的问题:一个变量是整数形式,并有295个级别。我需要使用这个变量来创建其他的,但我不知道如何处理这些关卡。R Dataframe中的级别
这些是什么,我该如何处理它们?
我从.csv文件导入数据并附加数据集。
我的问题:一个变量是整数形式,并有295个级别。我需要使用这个变量来创建其他的,但我不知道如何处理这些关卡。R Dataframe中的级别
这些是什么,我该如何处理它们?
做摘要(数据)检查事情得到了正确的阅读。如果列不是数字,那么请查看colClasses参数以read.csv强制它,这可能也会导致格式不正确的数字的NA值。
help(read.csv)会有所帮助。
当你用read.table(或read.csv? - 你没有指定)读入数据时,添加参数stringsAsFactors = FALSE。然后你会得到字符数据。
如果您期望列为整数,那么您必须具有不可解释为整数的数据,因此在读取它之后转换为数字。
txt <- c("x,y,z", "1,2,3", "a,b,c")
d <- read.csv(textConnection(txt))
sapply(d, class)
x y z
##"factor" "factor" "factor"
## we don't want factors, but characters
d <- read.csv(textConnection(txt), stringsAsFactors = FALSE)
sapply(d, class)
# x y z
#"character" "character" "character"
## convert x to numeric, and wear NAs for non numeric data
as.numeric(d$x)
#[1] 1 NA
#Warning message:
#NAs introduced by coercion
最后,如果您要忽略这些输入详细信息并从该因子中提取整数级别,例如, as.numeric(水平(d $ x))[d $ x],按照因数中的“警告”。 !
从你的澄清,我建议你重做你读的语句和函数read.table头= TRUE,stringAsFactors = FALSE和as.is工作= stringsAsFactors和SEP = “”:
datinp <- read.table("Rdata.csv", header=TRUE, stringAsFactors=FALSE ,
as.is = !stringsAsFactors , sep=",")
datinp$a <- as.numeric(datinp$a)
datinp$b <- as.numeric(datinp$b)
datinp$ctr <- with(datinp, as.integer(a/b)) # no loop needed when using vector arithmetic
,或者你可以简单地使用
d$x2 = as.numeric(as.character(d$x))
。
这可能意味着一些事情,这取决于你的意思是'水平'。这听起来有点像你的数字已经被转换为因子变量,因为某个地方是一个形式很糟糕的数字,所以R将它全部转换为分类的“因子”变量。您可以在这里剪切并粘贴确切的代码和错误消息吗? – Spacedman 2010-12-01 22:18:58
你读过“?factor”吗?或'?levels` – Marek 2010-12-01 22:24:24
setwd(“D:/ users/me/Desktop”) data < - read.csv(“Rdata.csv”) attach(data) ctr < - for(i in 1:4722)\t {as.integer(a [i]/b [i])} – user446667 2010-12-01 22:24:49