3

私は100個の変数を持つデータフレームを持っています。そのうちのサブセット、たとえばdataframename [、30:50]を元の数値(1,2,3,4,5)に変換したいと考えています。

係数を変換するときに使用する必要があることはわかっていますas.numeric(levels(f))[f]が、一度に係数を 1 つずつ変換する場合にのみ機能します。一気に変換したいと思います。

これはうまくいきません:

as.numeric(levels(dataframename[,30:50]))[dataframename[,30:50]]  

これもありません:

sapply(dataframename[,30:50],as.numeric(levels(dataframename[,30:50]))    
[dataframename[,30:50]]  

私が読むべきアイデアやものはありますか?

4

2 に答える 2

6

これは小さな例ですが、アイデアは保持する必要があります。を使用lapplyして、変換をデータ フレームの各列に適用し、それらの列を直接置き換えることができます。

# make example data
dat <- as.data.frame(lapply(as.data.frame(matrix(seq(2*3), ncol = 3)), factor))

factorconvert <- function(f){as.numeric(levels(f))[f]}
dat[, 2:3] <- lapply(dat[, 2:3], factorconvert)
dat
#  V1 V2 V3
#1  1  3  5
#2  2  4  6
#str(dat)
#'data.frame':  2 obs. of  3 variables:
# $ V1: Factor w/ 2 levels "1","2": 1 2
# $ V2: num  3 4
# $ V3: num  5 6
于 2012-10-12T23:04:21.797 に答える