gpt4 book ai didi

r - R中的组合因子水平

转载 作者:行者123 更新时间:2023-12-04 10:12:31 28 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Cleaning up factor levels (collapsing multiple levels/labels)

(10 个回答)


12 个月前关闭。




我想将级别“A”、“B”合并为“A+B”。我通过以下方式成功地做到了这一点:

x <- factor(c("A","B","A","C","D","E","A","E","C"))
x
#[1] A B A C D E A E C
#Levels: A B C D E
l <- c("A+B","A+B","C","D+E","D+E")
factor(l[as.numeric(x)])
#[1] A+B A+B A+B C D+E D+E A+B D+E C
#Levels: A+B C D+E

有没有更简单的方法来做到这一点? (即更易于解释的函数名称,例如 combine.factor(f, old.levels, new.levels) 将有助于更容易地理解代码。)

另外,我尝试找到一个命名良好的函数,它可能与 dplyr 包中的数据框一起使用,但没有运气。最接近的实现是
df %>% mutate(x = factor(l[as.numeric(x)]))

最佳答案

一种选择是 recode来自 car

library(car)
recode(x, "c('A', 'B')='A+B';c('D', 'E') = 'D+E'")
#[1] A+B A+B A+B C D+E D+E A+B D+E C
#Levels: A+B C D+E

它也应该与 dplyr 一起使用
library(dplyr)
df %>%
mutate(x= recode(x, "c('A', 'B')='A+B';c('D', 'E') = 'D+E'"))
# x
#1 A+B
#2 A+B
#3 A+B
#4 C
#5 D+E
#6 D+E
#7 A+B
#8 D+E
#9 C

数据
df <- data.frame(x)

关于r - R中的组合因子水平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36568758/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com