首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R:在R中将factor错误地转换为数字

R:在R中将factor错误地转换为数字
EN

Stack Overflow用户
提问于 2014-04-18 23:55:11
回答 1查看 803关注 0票数 0

下面的奇怪行为出现在我的R代码中。这是我的因子对象:

代码语言:javascript
运行
复制
R> pointsraw
[1] 2                 7                 6                 10                2/1-1/0.5        
[6] 1                 0.500000000000000 3                 1                 8                
[11] 7/1-5/0.7-3/0.4   3                 3/2-2/1           11/5-9/3-5/1      4                
[16] 4                 4/2/0             80                4/0               20               
[21] 2                 4/1-3/0.5        
18 Levels: 0.500000000000000 1 10 11/5-9/3-5/1 2 2/1-1/0.5 20 3 3/2-2/1 4 4/0 4/1-3/0.5 4/2/0 6 ... 80

这是第一个条目

代码语言:javascript
运行
复制
R> pointsraw[[1]]
[1] 2
18 Levels: 0.500000000000000 1 10 11/5-9/3-5/1 2 2/1-1/0.5 20 3 3/2-2/1 4 4/0 4/1-3/0.5 4/2/0 6 ... 80

到目前为止一切都很好,但令人惊讶的是:

代码语言:javascript
运行
复制
R> as.numeric(pointsraw[[1]])
[1] 5

问题是,为什么会发生这种情况?为什么2变成了5?

EN

回答 1

Stack Overflow用户

发布于 2014-04-19 00:02:05

在R中,因子不一定映射到它们各自的数字,因为因子只是标签(它们可以是字符)。下面是一个示例:

代码语言:javascript
运行
复制
obs = as.factor(sample(sample(1:100,3),20,replace=T))
as.numeric(obs)

提供:

代码语言:javascript
运行
复制
> obs
 [1] 72 72 72 77 77 72 12 77 12 72 12 72 12 12 72 77 12 77 77 77
Levels: 12 72 77
> as.numeric(obs)
 [1] 2 2 2 3 3 2 1 3 1 2 1 2 1 1 2 3 1 3 3 3

下面是一些可以让你使用因子的函数:

代码语言:javascript
运行
复制
# dropping and setting levels
Z = as.factor(sample(LETTERS[1:5],20,replace=T))
levels(Z)
Y = as.factor(Z[-which(Z %in% LETTERS[4:5])])
levels(Y)
Y=droplevels(Y) # drop the levels
levels(Y)
levels(Y) = levels(Z) # bring them back
levels(Y)
Y = factor(Y,levels=LETTERS[1:7]) # expand them
levels(Y)
attr(Y,"levels")
attr(Y,"levels") = LETTERS[1:8] # keep expanding them
levels(Y)
require(plyr)
Y = mapvalues(Y,levels(Y),letters[1:length(levels(Y))]) # change the labels of the levels
levels(Y)
x<-factor(Y, labels=LETTERS[(length(unique(Y))+1):(2*length(unique(Y)))]) # change the labels of the levels on another variable
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23157651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档