2017-09-13 3 views
0

私は因数分解された数値列を持つデータフレームを持っており、数値に変換する必要があります。ここではサンプルです:nasを無視して係数を数値に変換します

y <- structure(list(y = structure(c(2L, NA, 3L, 1L, 4L, 2L), .Label = c(" 1,000,000.00 ", " 1,200,000.00 ", " 150,000.00 ", " 200,000.00 "), class = "factor")), .Names = "y", row.names = c(NA, -6L), class = "data.frame") 

データフレームは、NASが含まれていると私は数値に因子レベルを変換しようとするので、私はお返しに、すべてのNASを取得します。ここで私が試したことがあります。

y <- as.data.frame(y) 
y <- as.numeric(levels(y)) 
y$y <- as.numeric(levels(y$y)[y$y]) 

これはNAのみを返します。どのようにしてこれらの因子レベルを数値に変換することができますか?

+0

あなたはを取り除くために必要になるだろうあなたが 'as.numeric'を使用したい場合、すべてのコンマが最初に、例えば'gsub'。 – joran

答えて

1

あなたは数字のみを維持したいので、あなたがgsubと他のすべてを削除することができコンマに

as.numeric(gsub(",", "", levels(y$y)[y$y])) 

[1] 1200000  NA 150000 1000000 200000 1200000 
+0

問題はナスとは関係なく、カンマだけでした... –

0

を削除する必要があります。

levels(y$y) <- gsub("[^0-9]", "", levels(y$y)) 
levels(y$y) <- as.numeric(levels(y$y)) 
#   y 
# 1 1.2e+08 
# 2 <NA> 
# 3 1.5e+07 
# 4 1e+08 
# 5 2e+07 
# 6 1.2e+08 
関連する問題