R从列中读取数据但不是纯数据,它有一个“级别”分隔符

时间:2013-12-02 01:22:25

标签: r levels

我有一个非常标准的表,通常当我做这样的事情来读表中的一列它工作正常,但由于某种原因这次它没有。

x <- dataFile$columnName

这是我得到的:

[1] 61 71 83 55 44 78 57 46 41 36 45 48 38 33 54 62 60 44 70 49 57 86 41 71 59 52 51 62 45 43
54 Levels:  33-87    36-81    38-79    41-70    41-85    43-47    44-51    44-62    45-51   ... 43

我只想要顶部,没有所有级别。

-----------

编辑(准备关闭):不是在评论中留下现在误导性的信息(如果这出现在某人的搜索中),则顶部只是一组因子级别。如果您只想要这些值(作为文本),您可以使用:as.character(x)。如果您希望减号前的字符(如果存在),您可以使用:

  as.numeric( sub("\\-.+$", "", as.character(x) ) )

使用as.numeric(x)通常会返回1到54之间的值,除非您只需要索引,否则无意义。

1 个答案:

答案 0 :(得分:0)

来自?read.table

<强> stringsAsFactors
逻辑:字符向量应该转换为因子吗?请注意,这被as.is和colClasses覆盖,两者都允许更好的控制。

所以在read.table命令中设置stringAsFactors = FALSE:

data <- read.table("C:/rk/R/problem.txt", sep="\t", fill = FALSE, stringsAsFactors = FALSE)

输出一列:

data$V21
 [1] "avg "   " 45.0 " " 45.5 " " 55.7 " " 58.2 " " 60.0 " " 60.2 " " 58.3 " " 58.4 " " 57.3 " " 55.7 " " 53.4 " " 52.5 " " 52.7 " " 53.4 " " 51.9 "
[17] " 52.6 " " 53.1 " " 53.1 " " 53.5 " " 52.4 " " 52.3 " " 52.0 " " 52.1 " " 51.9 " " 51.7 " " 52.1 " " 52.1 " " 52.4 " " 51.8 " " 51.6 " " 51.0" 

stringAsFactors设置为FALSE时没有级别。