次のようにデータフレームに列があります:
COL1
$54,345
$65,231
$76,234
どうすればこれに変換できますか:
COL1
54345
65231
76234
私が最初にそれを試した方法は:
df$COL1<-as.numeric(as.character(df$COL1))
NAが導入されたとのことなので、それはうまくいきませんでした。
それから私はこのようにそれを試しました:
df$COL1<-as.numeric(gsub("\\$","",as.character(df$COL1)))
そして、これは同じことが起こりました。
何か案は?
gsub
が機能しない理由は、列に,
があり、それがまだ数値ではないためです。したがって、as.numeric
を使用して「数値」に変換すると、すべての非数値要素がNA
に変換されます。そのため、,
と$
の両方を削除して機能させる必要があります。
df1$COL1 <- as.numeric(gsub('[$,]', '', df1$COL1))
角かっこ($
)内の,
と[$,]
を照合して、その文字と見なされるようにします($
をそのままにすると、特別な意味があります。つまり、終わりを示します文字列の)。それを''
に置き換えます。
または、文字(\\
)をエスケープ($
)して一致させ、''
に置き換えることもできます。
df1$COL1 <- as.numeric(gsub('\\$|,', '', df1$COL1))
parse_number
from readr
パッケージ。数値以外の文字を削除します。
library(readr)
parse_number(df$COL1)
#[1] 54345 65231 76234
ストリンガーライブラリを使用して「$」と「、」を削除する別のオプションは、次のように変換します。
df %>% mutate(COL1 = COL1 %>% str_remove_all("\\$,") %>% as.numeric())
単に:
例えば。
library(dplyr)
"$54,345" %>% gsub(",", "", .) %>% gsub("\\$", "", .) %>% as.numeric()
# [1] 54345