RのMASSパッケージ内のcorresp関数を用いたとき、エラーに悩まされたので、皆様と共有しておく。

環境

Ubuntuのバージョン


$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"

Rのバージョン


$ R --version
R version 3.3.3 (2017-03-06) -- "Another Canoe"
Copyright (C) 2017 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under the terms of the
GNU General Public License versions 2 or 3.
For more information about these matters see
http://www.gnu.org/licenses/.

MASSのバージョン


> packageVersion("MASS")
[1] ‘7.3.45

corresp.matrix(x, …) でエラー: empty row or column in table

corresp関数の引数xは、xtabs関数から作成したオブジェクトとする。

次のようなエラーが出力されたとする。これは、ある行または列の値がすべて0であるため、計算が実行できないことを表している。


> library(MASS)
> corresp(x, nf = min(c(nrow(x), ncol(x))) - 1)
corresp.matrix(x, ...) でエラー: empty row or column in table 

ある行がすべて0である場合は、次のようにしてその行を取り除く。


# 行ごとに、各列の合計値が0を超える行を抽出
x <- x[rowSums(x) > 0, ]

ある列がすべて0である場合は、次のようにしてその列を取り除く。


# 列ごとに、各行の合計値が0を超える列を抽出
x <- x[, colSums(x) > 0]

corresp.default(x, nf = 1) でエラー: invalid table specification

上記のような方法で、ある行または列を取り除いたxを用いてcorresp関数を使用した場合、次のようなエラーが出る。
出力されたエラーにおいて、corresp関数の引数nfの値は、x次第であることに注意する。


> corresp(x, nf = min(c(nrow(x), ncol(x))) - 1)
corresp.default(x, nf = 1) でエラー: invalid table specification 

この対処方法は、xをもう一度xtabs関数を適用したxにすれば良い。
例えば、次のコードのようにxを一度データフレームに変換して、xtabs関数へ渡す。行名と列名は適宜変更していただきたい。


x <- xtabs(Freq ~ [行名] + [列名], data=as.data.frame(x))

このxをcorresp関数に渡せば、エラーなく処理が完了する。


> corresp(x, nf = min(c(nrow(x), ncol(x))) - 1)


関連する記事

  • アンケートの自由記述からニーズを抽出する方法アンケートの自由記述からニーズを抽出する方法 アンケートは様々な場面で有効活用されていると思うが、特に、「年齢」などの数量回答や、「男性・女性」、「満足度の5段階評価」などの単一回答、「購入動機を3つまで回答してください」などの複数回答は、集計や分析がしやすいため、重点的に活用していることだろう。 回答者の立場で考えると、数量回答・単一回答・複数回答は、設問者からの問いかけに対し、返答があらかじめ用意されていること […]
  • C++ Boostによるコマンドライン引数処理C++ Boostによるコマンドライン引数処理 boost::program_optionsを用いると、コマンドライン引数(オプション)を比較的容易に解析することができる。 #include <iostream> #include <string> #include <boost/program_options.hpp> int main(int argc, char **argv) […]
  • 顧客満足度調査から重要な改善点を導く方法顧客満足度調査から重要な改善点を導く方法 顧客満足度調査とは、顧客に対して提供している商品やサービスに対して、顧客がどれだけ満足しているか、または不満を持っているか、満足している点はどこか、不満を持っている点はどこかなどをアンケートなどにより調査することだ。 顧客満足度調査の結果は、各項目ごとに平均値を出したり、棒グラフやレーダーチャートにすることが多い。 もし、あなたが顧客満足度調査の結果を見て、「ある […]
  • 地図で見る石川県金沢市の人口 2014年1月地図で見る石川県金沢市の人口 2014年1月 金沢市役所が公開している平成26年1月の住民基本台帳人口と総務省統計局が公開している地図データを基に人口、人口密度、世帯数、未成年・高齢者の年齢別などの数値および前年同月からの増減率を地図上に色分けして視覚化したものと上位・下位のランキングをご紹介する。 人口、世帯数などのデータを活用しようと考えた場合、まずは国勢調査を思いつくが、国勢調査は5年ごとに行われており、最近 […]
  • R言語 CRAN Task View:水文データとモデリングR言語 CRAN Task View:水文データとモデリング CRAN Task View: Hydrological Data and Modelingの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Maintainer: Sam Zipper, Sam Albers, Ilaria Prosdocimi Contact: samuelczipper at […]
R MASSパッケージcorresp関数のエラー対処方法