一目でわかる、飛び抜けたステータス。RStudioを使用して原神キャラクターを偏差値で評価

OVERVIEW

RStudioを使用して原神キャラクターを偏差値で評価

YEAR 2021

原神というPC・スマホで遊べるゲームをご存知でしょうか。

ゲームに興味のない方のために説明すると、半年前にリリースされたばかりの新規タイトルで

「セールスランキング世界1位」に君臨し続ける化け物タイトルです。

Redditなどの海外コミュニティも活発で、「強さランキング」などの記事・動画がバズりやすいです。

原神の動画だけで月収10万円を実現している日本人youtuberもいます。


原神のキャラクターのステータスはあらかじめ決まっていて、ウェブ上に公開されています。

しかし、これだけでは数値の羅列で、直感的ではなく、比較がしにくいです。

https://genshin-impact.fandom.com/wiki/Characters/Comparison


そこで、R Studioを使用してキャラクターのステータスを偏差値に変換しようと思います。

そうすると、例えばHPの数値が高いキャラクターの中でも、特に抜きん出て高いキャラクターがひと目で分かります。


そして完成したものが以下になります。

例えば12行目にHuTaoという、HP依存で攻撃力が上がるキャラクターがいます。

彼女のHP偏差値は73で飛び抜けて高いことがわかります。

次点でヒーラーのJeanの偏差値68。HuTaoの突出したHPの高さが偏差値として現れています。



制作の過程ではいくつもの問題が発生しました。

例えば、もとの資料でHPの数値がカンマ入りで記述されているために

HPの列が数字ではなく文字列として扱われ、数値としての操作ができない状態でした。

この問題はGoogleアドセンスの収益データなどでも発生し、数多くの事例があるそうです。

そこでHPの列のカンマを除去して数値にする方法として

http://hiratake55.hatenadiary.jp/entry/20091114/1258186780

こちらの記事を参考に、sub関数で置換してas.numeric 関数で数値型に変換を行いました

これらを実現するために使用したR Studioのコードがこちらです。


#海外wikiからステータス表をコピーしてきてcsvファイルに変換したものを読み込む
d <- read.csv("genshinstatus.csv")

#偏差値を求めよう scaleを使って標準化を行って計算しよう
scale(d$ATK)
#偏差値を求めよう
scale(d$ATK)*10+50

#マトリックス行列を作る関数 中身の数字 行の数 列の数
x <- matrix(0, 33, 7)
#作った行列にデータを格納する scale関数で偏差値にしたデータを格納する
x[,1] <- d$Name
x[,2] <- scale(d$HP)*10+50 #HPの列が文字列扱いのためエラー
x[,3] <- round(scale(d$ATK)*10+50)
x[,4] <- round(scale(d$DEF)*10+50)
x[,5] <- d$Ascension.Stat
x[,6] <- d$Ascension.Stat.Value
x[,7] <- d$Release.Date

#HPの列だけ数字にカンマが入っていて文字列として扱われているため、偏差値が計算できない。
c <- d$HP
as.numeric(sub(",","",c))
d$HP <- as.numeric(sub(",","",c))
#再度、HPの偏差値をscale関数で計算して、行列xの列2に挿入する
x[,2] <- round(scale(d$HP)*10+50)


#ベクトルには names 属性と呼ばれる属性情報を付けることが出来,
#要素の名前を持つベクトルは名前を使って要素を取り出すことが出来る.
retuname <- c("番号", "キャラクター", "HP偏差値", "ATK偏差値", "DEF偏差値", "突破上昇ステータス", "突破上昇ステータス量", "リリース日")

#名付ける
names(h) <- retuname
#偏差値表hに列の名前が付いた

#表として出力する
write.csv(x, "hensati.csv")
h <- read.csv("hensati.csv")



完成した表が冒頭のものです。

R Studioを使用してキャラクターのステータスを偏差値に変換したことで、

キャラクターごとのステータス格差がわかるようになりました。