🐶

[R言語] データフレームの文字列を任意の数値に割り当てる

2024/03/13に公開

動物を数字に置き換えられる

たとえば,その日にみた動物を記録したデータフレームがある。
このデータフレームには,犬,犬,猫,犬,ネズミ...といったデータが蓄積されている。

動物のデータフレーム

animal <- as.data.frame(
    a <- rep(c('Dog', 'Cat', 'Mouse'), times = c(3, 5, 10)))
names(animal) <- c("name")
head(animal)

結果

head(animal)
name
1 Dog
2 Dog
3 Dog
4 Cat
5 Cat
6 Cat

犬を0,猫を0.2,ネズミを1にしたい。

事情は色々ありますね。

変換用の変数を作ります。

# 変換用の変数作成
conv <- c(0, 0.2, 1)
names(conv) <- c('Dog', 'Cat', 'Mouse')

変数の中身はこんな感じ

conv
Dog Cat Mouse
0.0 0.2 1.0

変換します

animal$value <- conv[animal$name]
head(animal)

結果

head(animal)
name value
1 Dog 0.0
2 Dog 0.0
3 Dog 0.0
4 Cat 0.2
5 Cat 0.2
6 Cat 0.2

文字列に対して,任意の数値を入れました。
お察しの通り,数値じゃなくてもできます。

犬と猫はペット,ネズミはその他にしたい。

ネズミもペットになりえますが,ここはおさえて。
先ほどのconvに,犬,猫,ネズミに対応するカテゴリー(pet, other)を振り分ける。

# 変換用の変数作成
conv <- c("pet", "pet", "other")
names(conv) <- c('Dog', 'Cat', 'Mouse')

結果

conv
Dog Cat Mouse
"pet" "pet" "other"

犬と猫はペットです

animal$category <- conv[animal$name]
head(animal)

結果

head(animal)
name value category
1 Dog 0.0 pet
2 Dog 0.0 pet
3 Dog 0.0 pet
4 Cat 0.2 pet
5 Cat 0.2 pet
6 Cat 0.2 pet

Rの基本中の基本だけど,知らない人も多いし汎用性は多いかと。
では良い日を!

Discussion