3

$ や 1000 単位の区切り記号など、人間用にフォーマットされた価格など、Web サーバーからいくつかのデータをダウンロードしました。

> head(m)
[1] $129,900 $139,900 $254,000 $260,000 $290,000 $295,000

を使用して、コンマを取り除くことができました

m <- sub(',','',m)

しかし

m <- sub('$','',m)

ドル記号を削除しません。mn <- as.numeric(m)or as.integerを試してみると、次のエラー メッセージが表示されます。

警告メッセージ: 強制によって導入された NA

結果は次のとおりです。

> head(m)
[1] NA NA NA NA NA NA

$ 記号を削除するにはどうすればよいですか? ありがとう

4

3 に答える 3

8
 dat <- gsub('[$]','',dat)
 dat <- as.numeric(gsub(',','',dat))
 > dat
 [1] 129900 139900 254000 260000 290000 295000

一歩で

 gsub('[$]([0-9]+)[,]([0-9]+)','\\1\\2',dat)
[1] "129900" "139900" "254000" "260000" "290000" "295000"
于 2013-02-05T03:39:31.563 に答える
6

これを試して。これは、数字ではないものをすべて空の文字列に置き換えることを意味します。

as.numeric(gsub("\\D", "", dat))

または、数字でも小数でもないものをすべて削除するには:

as.numeric(gsub("[^0-9.]", "", dat))

更新:質問のデータが代表的でない場合に備えて、2番目の同様のアプローチを追加しました。

于 2013-02-05T03:46:31.193 に答える
3

あなたも使用することができます:

x <- c("$129,900", "$139,900", "$254,000", "$260,000", "$290,000", "$295,000")

library(qdap)
as.numeric(mgsub(c("$", ","), "", x))

降伏:

> as.numeric(mgsub(c("$", ","), "", x))
[1] 129900 139900 254000 260000 290000 295000

ベースに留まりたい場合は、fixed = TRUEgsub への引数を使用します。

x <- c("$129,900", "$139,900", "$254,000", "$260,000", "$290,000", "$295,000")
as.numeric(gsub("$", "", gsub(",", "", x), fixed = TRUE))
于 2013-02-05T03:55:36.090 に答える