数値変数と因子変数の両方を持つ「保険」という名前のデータ フレームがあります。カテゴリ変数のレベルを確認できるように、すべての因子変数を選択するにはどうすればよいですか?
sapply(insurance,class)
すべての変数のクラスを取得しようとしました。class(var)="factor"
しかし、変数名も の結果に含まれているため、if に基づいて論理的な引数を作成することはできませんsapply()
。
ありがとう、
数値変数と因子変数の両方を持つ「保険」という名前のデータ フレームがあります。カテゴリ変数のレベルを確認できるように、すべての因子変数を選択するにはどうすればよいですか?
sapply(insurance,class)
すべての変数のクラスを取得しようとしました。class(var)="factor"
しかし、変数名も の結果に含まれているため、if に基づいて論理的な引数を作成することはできませんsapply()
。
ありがとう、
いくつかのデータ:
insurance <- data.frame(
int = 1:5,
fact1 = letters[1:5],
fact2 = factor(1:5),
fact3 = LETTERS[3:7]
)
私はsapply
あなたがしたように使用しますが、と組み合わせてis.factor
論理ベクトルを返します:
is.fact <- sapply(insurance, is.factor)
# int fact1 fact2 fact3
# FALSE TRUE TRUE TRUE
次に[
、これらの列を抽出するために使用します。
factors.df <- insurance[, is.fact]
# fact1 fact2 fact3
# 1 a 1 C
# 2 b 2 D
# 3 c 3 E
# 4 d 4 F
# 5 e 5 G
最後に、レベルを取得するには、次を使用しますlapply
。
lapply(factors.df, levels)
# $fact1
# [1] "a" "b" "c" "d" "e"
#
# $fact2
# [1] "1" "2" "3" "4" "5"
#
# $fact3
# [1] "C" "D" "E" "F" "G"
str(insurance)
短い要約としても興味深いかもしれません。
flodel のデータ フレーム「保険」を使用してすべての要素を一度に取得するには、次apply
のようにを使用できます。
apply(insurance,2,factor)
int fact1 fact2 fact3
[1,] "1" "a" "1" "C"
[2,] "2" "b" "2" "D"
[3,] "3" "c" "3" "E"
[4,] "4" "d" "4" "F"
[5,] "5" "e" "5" "G"
1 つの因子のレベルのみに関心がある場合は、次のことができます。
factor(insurance$fact1)
[1] a b c d e
Levels: a b c d e