f1 <- c("a", "b", "c")
f2 <- c("x", "e", "t")
f1 <-factor(f1)
f1
#[1] a b c
#Levels: a b c
str(f1)
#Factor w/ 3 levels "a","b","c": 1 2 3
f2 <-factor(f2)
f2
#[1] x e t
#Levels: e t x
str(f2)
#Factor w/ 3 levels "e","t","x": 3 1 2
如上所述,为什么f2
"e"
被视为3?当按字母顺序考虑时,它不应该是1吗?
答案 0 :(得分:6)
您将f2
设置为c("x", "e", "t")
因此&#34; x&#34;因子3
(从字母顺序)仍然处于第一位置,而&#34; e&#34;处于第二位置的确有因子1
f2 <- factor(c("x", "e", "t"))
str(f2)
Factor w/ 3 levels "e","t","x": 3 1 2
str(f2)
结果的说明:
f2
属于因子类型,这意味着这些值不应按原样进行,但会被编码为因子
f2
有3个级别的因子(3个不同的值),按顺序排列&#34; e&#34;,&#34; t&#34;,&#34; x&# 34;,所以&#34; e&#34;被编码为因子1,&#34; t&#34;被编码为因子2和&#34; x&#34;被编码为因子3
f2
包含3个编码值3,1,2
要去分解:
...
=&GT;你得到&#34; x&#34;,&#34; e&#34;,&#34; t&#34;。
让我们在f2
f2[4] <- "e"
str(f2)
Factor w/ 3 levels "e","t","x": 3 1 2 1
你可以看到一个因子1编码&#34; e&#34;现在排在第4位。
f2
现在代表:&#34; x&#34;,&#34; e&#34;,&#34; t&#34;,&#34; e&#34;。
答案 1 :(得分:1)
str(f2)按字母顺序显示字母,但数字取决于f2对象中字母占用的位置。
如果f2是x e t
Levels are e t x (in order)
Numbers for the above letters would be: (in order)
e = 1
t = 2
x = 3
str gives number sequence according to the place occupied by the letters in
the original f2 object , i.e. x, e, t = 3,1,2
希望这有帮助。