微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

r expss 重新编码因子

如何解决r expss 重新编码因子

我想使用以下示例对因子变量进行小的重新编码:https://cran.r-project.org/web/packages/expss/vignettes/tables-with-labels.html

a<-c(1,2,1,3,5,4,1)
a<-factor(a,levels = c(1,5),labels = c("aa","bb","cc","dd","ee" ))

假设我想创建新变量 b,其中“aa”、“bb”、“cc”现在是“xx”,其余部分将被复制。 看来我不能参考以下数字:

b<-expss::recode(a,1:3~99)

因为这没有返回任何东西。所以我尝试通过标签引用:

b<-expss::recode(a,c("aa","cc")~"xx",TRUE~copy,with_labels=FALSE)

在这种情况下,新变量仍然存储了旧级别:

$levels
[1] "aa" "bb" "cc" "dd" "ee" "xx"

$class
[1] "factor"

那么,仅使用“xx”、“dd”、“ee”级别获取新变量的正确方法是什么?

解决方法

我们可以用 droplevels 包裹来删除那些未使用的级别

b <- droplevels(expss::recode(a,c("aa","bb","cc")~"xx",TRUE~copy,with_labels=FALSE))
levels(b)
#[1] "dd" "ee" "xx"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。