首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数据类型“因素”转换为R中的数据类型“数值”?

如何将数据类型“因素”转换为R中的数据类型“数值”?
EN

Stack Overflow用户
提问于 2012-06-18 08:47:40
回答 2查看 5.4K关注 0票数 2

可能重复:

How to convert a factor to an integer\numeric without a loss of information

我想计算数组的唯一值(以及稍后绘制的计数):

代码语言:javascript
复制
data = c(1,2,3,4,5,2.1,1,2,1,2,1,4,5,7,8,9,6,5,4,3,2,2,1)
uniCount = as.data.frame(table(data))
uniCount$cumsum = cumsum(uniCount$Freq)

str(uniCount)

plot (uniCount$data, uniCount$Freq)
plot (uniCount$data, uniCount$cumsum)

但是,列data的值不是“数字”而是“因素”。对我来说,数据类型因素似乎是一个字符串的关联数组。当我使用as.numeric(uniCount$data)时,结果是"1 2 3 4 5 6 7 8 9 10“

如何将数据类型“因素”转换为数据类型“数值”?或者如何防止R将我的数值转换为Facotr?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-18 08:56:38

这可能对你有用

代码语言:javascript
复制
as.numeric(attr(uniCount$data,"levels"))

代码语言:javascript
复制
as.numeric(levels(uniCount$data))

如果你不想要因素,试试

代码语言:javascript
复制
data = c(1,2,3,4,5,2.1,1,2,1,2,1,4,5,7,8,9,6,5,4,3,2,2,1)
uniCount = as.data.frame(table(data),stringsAsFactors =F)
uniCount$cumsum = cumsum(uniCount$Freq)

编辑:

卡尔·维托夫特(Carl)说,“谢谢,但?factor说,as.numeric(levels(uniCount$data))[uniCount$data]是被推荐的,比as.numeric(as.character(uniCount$data))略有效率”

票数 3
EN

Stack Overflow用户

发布于 2012-06-18 13:03:38

plyr包可以使这样的操作变得更容易,而无需获得字符/因素变量。

代码语言:javascript
复制
library(plyr)
d <- data.frame(x=c(1,2,3,4,5,2.1,1,2,1,2,1,4,5,7,8,9,6,5,4,3,2,2,1))
ddply(d, "x", summarize, Freq=length(x))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11079503

复制
相关文章

相似问题

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