我从一个 .csv 文件中导入了数据,并附加了数据集。
我的问题是:有一个变量是整数形式的,有 295 个级别。我需要使用这个变量来创建其他变量,但我不知道如何处理这些级别。
这些是什么,我该怎么处理它们?
我的问题是:有一个变量是整数形式的,有 295 个级别。我需要使用这个变量来创建其他变量,但我不知道如何处理这些级别。
这些是什么,我该怎么处理它们?
当您使用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(levels(d$x))[d$x],具体请参见 ?factor 中的“警告”。
d$x2 = as.numeric(as.character(d$x))
。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
执行summary(data)检查读入的数据是否正确。如果某些列不是数字,可以查看read.csv函数中的colClasses参数进行强制转换,这可能会导致一些格式不正确的数字变成NA值。
使用help(read.csv)获取更多帮助信息。
?factor
吗?或者?levels
? - Marek