『Rで学ぶデータサイエンス8 ネットワーク分析 第2版』第8章の修正

先週のエントリp.223foreignパッケージ(version 0.8-69)に関する修正を追加しましたが、より簡便な方法がありましたので再修正します。

read.spss()関数で
"GSS1985.sav"ファイルを読み込む際にmax.value.labels = 5という引数を追加することで(エラーメッセージは出ますが)、その後のRコード実行結果を再現できます。

gss85 <- read.spss("GSS1985.sav", use.value.labels = TRUE,
 to.data.frame = TRUE, max.value.labels = 5)

本書のコードのままだと数値として扱いたい年齢なども因子(factor)に変換されてしまい、数値としての計算ができなかったり、計算結果が違ってしまいます。

ここでuse.value.labels = FALSEにすると年齢などが因子に変換されず数値として扱うことができますが、性別や人種などの変数もカテゴリーラベルが使用されず数値のままになってしまいます。

本書の例では
0~6の値をとるnumgivenは数値で、5つのカテゴリからなるraceは因子で扱いたいので、max.value.labels = 5と指定することで、性別や人種は因子として、年齢などは数値として扱うことができ、問題を回避できます。