R:データフレームからカテゴリ値らしい列を選別する

データフレームのどの列がカテゴリ値なのか、summary で見るなどして予め確認しておくべきなのかもですが、ある程度の条件でそれらしい列を抽出しようという試みです。

  • データは iris を使う
  • カテゴリ値は、列ごとに 2 〜 5 種類存在すると想定

とした場合、以下のような形が使えるかもしれません。

library("dplyr")

which(
  sapply(
    colnames(iris),
    function(c) {
      iris[[c]] %>%
        na.omit() %>%
        unique() %>%
        length() %>%
        between(2, 5)
    }
  )
) %>%
  names()
'Species'

データ量が少ないと誤認識しそうですが、参考になれば。

コメント