df_intrateが実際にASSETクラスAの予想行数であることをRスタジオが示しているにもかかわらず、df_intrateに構造情報が保持されていますか?
はい。これは、要因呼ばRに格納されているか、カテゴリ変数である - 両方レベル、すべての可能な値のベクトルと、撮影した実際の値が格納されている:あなたは取り除くことができ
x = factor(c('a', 'b', 'c', 'a', 'b', 'b'))
x
# [1] a b c a b b
# Levels: a b c
y = x[1]
# [1] a
# Levels: a b c
droplevels()
、または再適用するfactor
機能によると、未使用のレベルは、存在しているものだけを外に新しい要素を作成:
droplevels(y)
# [1] a
# Levels: a
factor(y)
# [1] a
# Levels: a
あなたはまた、すべての因子の列からすべての未使用のレベルをドロップするように、データフレームにdroplevels
を使用することができます:
dat = data.frame(x = x)
str(dat)
# 'data.frame': 6 obs. of 1 variable:
# $ x: Factor w/ 3 levels "a","b","c": 1 2 3 1 2 2
str(dat[1, ])
# Factor w/ 3 levels "a","b","c": 1
str(droplevels(dat[1, ]))
# Factor w/ 1 level "a": 1
あなたの現在の問題に関係のないけれども、我々はまた、factor
は、彼らが行くべき因子の水準と順序を指定するために使用できるオプションのlevels
引数を持っていることを言及する必要があります。これは、特定の注文(プロットやモデリングなど)が必要な場合や、実際に存在するレベルよりもレベルが高く、それらを含める場合に便利です。 levels
を指定しない場合、デフォルトはアルファベット順になります。
x = c("agree", "disagree", "agree", "neutral", "strongly agree")
factor(x)
# [1] agree disagree agree neutral strongly agree
# Levels: agree disagree neutral strongly agree
## not a good order
factor(x, levels = c("disagree", "neutral", "agree", "strongly agree"))
# [1] agree disagree agree neutral strongly agree
# Levels: disagree neutral agree strongly agree
## better order
factor(x, levels = c("strongly disagree", "disagree", "neutral", "agree", "strongly agree"))
# [1] agree disagree agree neutral strongly agree
# Levels: strongly disagree disagree neutral agree strongly agree
## good order, more levels than are actually present
あなたは既に作成された因子のレベルの順序を変更するには?reorder
と?relevel
(または単にfactor
再び)を使用することができます。
'read.csv(path、as.is = TRUE)'を使用すると、因子列の代わりに文字列が得られることに注意してください。 'header = TRUE'と' sep = "、" 'は' read.csv'のデフォルト値なので、指定する必要はありません。 –