【发布时间】:2019-04-11 16:34:54
【问题描述】:
我有一个大型数据框 1,其中有很多列是因子。我想更改每个因素的因素级别顺序。
我有一个查找数据框 2 用于正确的因子级别订单。这意味着我可以使用因子变量来引用查找数据框。我可以获取订单并将其放入不同的变量中。到目前为止一切顺利。
简化示例:
d = tibble(
size = c('small','small','big', NA)
)
d$size = as.factor(d$size)
levels(d$size) # Not what I want.
proper.order = c('small', 'big') # this comes from somewhere else
我可以使用proper.order 更改 d 中的一列。
d$size = factor(d$size, levels = proper.order)
levels(d$size) # What I want.
我想使用变量来引用列名 (size)。
这不起作用:
my.column = 'size'
d[names(d) == my.column] = factor(d[names(d) == my.column], levels = proper.order, exclude = NULL)
levels(d$size) # What I want.
d # Not what I want.
我希望看到重新排序的因素。有时候是这样的。我希望该因子保持其值(显然)。它们都设置为 NA。
我怀疑这是因为d[names(d) == my.column] 是一个小标题,而不是一个因素。但是,为什么因子水平会发生变化?我怎样才能进入小标题并抓住因素?
【问题讨论】:
标签: r