处理1,0,NA时不存在的级别

时间:2010-06-21 12:26:53

标签: r

我在这里遇到了另一个新手问题。

我正在导入一个如下所示的CSV文件:

"username","interest","has_card"
"test01","not_interesting",1
"test02","maybe_interesting",0
"test03","not_interesting",0
"test04","maybe",1

mydata <- read.table(file("test.csv", encoding = "UTF-8"), header=TRUE, sep=",")

然后(也许这听起来像一个新手愚蠢的问题)为什么我可以得到基于字符串的东西的水平,像这样:

> levels(mydata$interest)
[1] "maybe"             "maybe_interesting" "not_interesting"

但不适用于基于二进制(整数)的东西。

> levels(mydata$has_card)
NULL

我正在做的是频率表的条形图,我基本上需要将标签0,1重命名为情节图例中的“否”,“是”。但我做不到:

levels(mydata$has_card)[1] <- "Yes"
levels(mydata$has_card)[0] <- "No"

就像我会用“Maybe”“maybe_interesting”“not_interesting”那样做

2 个答案:

答案 0 :(得分:1)

read.table的默认行为是将字符变量(未转换为逻辑,数字或复数)转换为因子,参见帮助页面中的as.isstringsAsFactors

R> class(mydata$has_card)
[1] "integer"
R> class(mydata$interest)
[1] "factor"
R> factor(mydata$has_card, labels=c("No", "Yes"))
[1] Yes No  No  Yes
Levels: No Yes

答案 1 :(得分:0)

数字字段不会自动转换为因子。您可能需要使用factor显式转换它们。