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 に答える