先日、購入した
ですが、ダウンロードできるデータをいじってみようと思い、income.csv というのをダウンロードしてみました。
しかし、私のやり方が悪いのか、
> x <- read.csv("income.csv") # x という変数に income.csv を入れる
> str(x) #データの構造を見る
'data.frame': 100 obs. of 7 variables:
$ id : chr "AU" "AY" "AB" "AM" ...
$ sex : chr "male" "female" "male" "male" ...
$ age : int 70 70 69 67 66 66 65 65 65 64 ...
$ height : num 160 156 173 166 171 ...
$ weight : num 58.3 44 75.7 69.3 76.5 67.3 41.5 53.5 46.8 52.7 ...
$ income : chr "201" "487" "424" "1,735" ...
$ generation: chr "elder" "elder" "elder" "elder" ...
となってしまい、肝心の income(収入)が chr(キャラクタ。文字列)になってしまい計算とかができません。
これは「,」が入っているせいだと考え、いろいろ調べたけれどよくわからず、ChatGPT 3.5 に尋ねてみたら
gsub 関数を教えてくれました。
あと、文字列を数値に変えるのは
as.numeric
で
> x$income <- as.numeric(gsub(",","",x$income)) #income の列データ内の「,」を取り除き、数値にしろ
とすると
> str(x) 'data.frame': 100 obs. of 7 variables:
$ id : chr "AU" "AY" "AB" "AM" ...
$ sex : chr "male" "female" "male" "male" ...
$ age : int 70 70 69 67 66 66 65 65 65 64 ...
$ height : num 160 156 173 166 171 ...
$ weight : num 58.3 44 75.7 69.3 76.5 67.3 41.5 53.5 46.8 52.7 ...
$ income : num 201 487 424 1735 929 ...
$ generation: chr "elder" "elder" "elder" "elder" ...
と、ちゃんと income 列のデータが数値になりました。
しかし・・・元データを自作して、それをお見せしつつやったほうがいいだろうと思い、自分で テキストエディタ、Excel, Numbers などで 数値の部分に「,」の入ったデータを作って読み込んでみたらどれもこれも
Column specification
Delimiter: ","chr (1): idnum (1): incomeℹ Use `spec()` to retrieve the full column specification for this data.ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
列の指定
デリミタ ", "chr (1): idnum (1): income_2139 `spec()` を使用して、このデータの完全な列の仕様を取得します。
と警告が出てしまうのはなぜなんだろう・・・
でもって、警告は出るけれど、最初から numeric (数値)と認識してくれている。
まあ、数値内に「,」が入っているデータは作らないのが吉ですね。