可能重复:
How to convert a factor to an integer\numeric without a loss of information
我想计算数组的唯一值(以及稍后绘制的计数):
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?
发布于 2012-06-18 08:56:38
这可能对你有用
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)说,“谢谢,但?factor说,as.numeric(levels(uniCount$data))[uniCount$data]是被推荐的,比as.numeric(as.character(uniCount$data))略有效率”
发布于 2012-06-18 13:03:38
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))https://stackoverflow.com/questions/11079503
复制相似问题