r - 如何折叠 R 中分类变量的水平

我有各种分类变量,每个分类变量都超过 5 个级别,我想要一个可以将它们折叠成两个级别的函数

column1<- c("bad","good","nice","fair","great","bad","bad","good","nice",
            "fair","great","bad")
column2<- c("john","ben","cook","seth","brian","deph","omar","mary",
            "frank","boss","kate","sall")

df<- data.frame(column1,column2)

所以对于上面的数据框,在 column1 中,我想用一个函数将所有“bad”转换为“bad”,将其他级别转换为“others”。我不知道该怎么做。 谢谢

最佳答案

使用ifelsecase_when

library(dplyr)
df <- df %>% 
   mutate(column1 = case_when(column1 != "bad" ~ "others", TRUE ~ column1))

此外,由于只有一个变化,我们可以这样做

df$column1[df$column1 != "bad"] <- "others"

https://stackoverflow.com/questions/74788905/

相关文章:

r - 如何将整行作为列名?

c# - 查找过去最近的日期

c++ - 在 C++ 中有没有办法像在 Java 中那样进行垃圾回收?

typescript - 从返回类型推断出窄字符串文字类型

c# - Blazor (.net 7) 中的三种依赖注入(inject)语法有区别吗?

rust - 类型 `&[u8]` 不能被 `usize` 索引?

c++ - 从函数中获取两个数组并将它们存储在 C++ 中的不同数据类型数组中

python - 捕获具有正面前瞻性但不匹配模式的组的正则表达式

regex - Linux 提取特定字符串之间的文本

javascript - 使用 js 正则表达式验证 gsheet/excel 相对范围字符串