将因子级别更改为列的自定义顺序

时间:2017-12-24 16:23:44

标签: r dataframe

我有一个如下数据框

<!DOCTYPE book [

<!NOTATION ccc SYSTEM "ccc">
<!ENTITY xxx SYSTEM "ccc" NDATA ccc>

<!ENTITY yyy "ddd">
<!ELEMENT book (author+, title, publisher)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT publisher (#PCDATA)>
<!ATTLIST title aaa ENTITY  #IMPLIED>
]>
<book>
    <author>asd</author>
    <title aaa="xxx"/>
    <publisher/>
</book>

默认情况下,自行车的系数级别设置为1,汽车设置为2,循环设置为3。我需要将因子水平改为1为汽车,2为循环,3为自行车 - 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

我们可以使用fct_relevel

library(forcats)
data$veh <- fct_relevel(data$veh, c('car', 'cycle', 'bike'))
str(data$veh)
#Factor w/ 3 levels "car","cycle",..: 1 3 1 1 2

答案 1 :(得分:1)

tidyverse / forcats解决方案没有错,但base-R解决方案是使用factor()并按所需顺序指定levels参数:

data$veh <- factor(data$veh, levels=c("car","cycle","bike"))

与普遍看法相反,ordered=TRUE在这种情况下通常不是必需的(即使是普通因素也有排序),除非你特别希望将焦点变量视为序数变量(在这种情况下,R将使用正交多项式对比,而不是默认的处理对比),或者希望能够在变量上使用比较运算符(例如veh > "car");如果您不确定,默认(普通)因素可能很好。