2017-09-29 3 views
-1

私は、次のような構造を持つdata.frameを持っている:データフレームを数値に変換しますか?

str(P) 
'data.frame': 24 obs. of 5 variables: 
$ vH : Factor w/ 101 levels "[Hz]","[m/s]",..: 34 51 66 71 76 78 83 4 9 11 ... 
$ P_el: Factor w/ 48 levels " ","[dB(A)]",..: 26 18 27 34 15 17 20 21 24 23 ... 
$ CP : Factor w/ 92 levels "-"," ","[-]",..: 30 39 41 44 45 43 40 37 35 33 ... 
$ CT : Factor w/ 68 levels " ","[-]","[kg/m³]",..: 4 4 4 4 4 4 4 4 4 4 ... 
$ TSR : Factor w/ 87 levels "-"," "," -20 to 45",..: 35 32 76 75 75 74 72 69 67 66 ... 

head(P) 
    vH P_el    CP CT TSR 
31 3 41 0.152229609724618 0 15.8 
32 4 231 0.36183539476084 0 11.8 
33 5 528 0.423450793411543 0 9.6 
34 6 957 0.444157733251402 0 9.5 
35 7 1524 0.445420179261082 0 9.5 
36 8 2242 0.438979954033443 0 9.1 

にはどうすればforループを実行せずに数値列を得ることができます:

n=ncol(P) 
for(j in 1:n){P[,j]=as.numeric(as.character(P[,j]))} 

私はdata.matrix(P)を試してみましたが、それは動作しません!

+1

'P [] = lapply(P、関数(x)はas.numeric(as.character(X)))'を使用dplyr溶液です。しかし、あなたは非数値レベルを最初に整理したいかもしれません... – Gregor

+0

あなたのテーブルは列にテキスト行を持っているようですので、列vHの[Hz]のような値です。カラムを数値に変換するのではなく、data.frameを作成する前にテーブルを消去してください。 – xraynaud

+0

@Gregor素晴らしい!ありがとう!それは非常にうまく動作:)任意のクリーニングなし –

答えて

1

ここmutate_all

library(dplyr) 
P %>% 
    mutate_all(as.character) %>% 
    mutate_all(as.numeric) 
関連する問題