2

可能重复:
如何在不丢失信息的情况下将因子转换为整数\数字

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

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不是“数字”而是“因子”。对我来说,数据类型 Factor 似乎是字符串的关联数组。当我使用as.numeric(uniCount$data)结果时给出“1 2 3 4 5 6 7 8 9 10”

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

4

2 回答 2

3

这可能对你有用

as.numeric(attr(uniCount$data,"levels"))

或者

as.numeric(levels(uniCount$data))

如果你不想要因素试试

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 Witthoft,但?factor说这as.numeric(levels(uniCount$data))[uniCount$data]是推荐的,比 as.numeric(as.character(uniCount$data))

于 2012-06-18T08:56:38.827 回答
0

plyr包可以使执行此类操作变得更容易,而无需获取字符/因子变量。

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))
于 2012-06-18T13:03:38.210 回答