R语言如何将Dataframe中指定分类合并为新的other分类
R语言实现分类合并+生成目标列联表的方案
以下是两种常用的可直接落地的实现方式:
方案1:tidyverse套件实现(语法友好,适合新手)
你需要先安装并加载tidyverse包,没有安装的话先运行install.packages("tidyverse")安装。
library(tidyverse) # 1. 对living_arrangements字段做重分类 df_processed <- df %>% mutate( living_arrangements = case_match( living_arrangements, c("Alternate between parents and partner", "College or student accomodation") ~ "Other", .default = living_arrangements ) ) # 2. 生成目标结构的列联表 result <- df_processed %>% count(living_arrangements, loneliness_level) %>% pivot_wider( names_from = loneliness_level, values_from = n, values_fill = 0 )
运行完成后result就是你需要的目标数据框结构。
方案2:Base R实现(无需安装额外包)
如果你不想加载第三方包,可以用基础R函数实现:
# 1. 重分类操作 # 如果你的living_arrangements是因子类型,用下面的代码: levels(df$living_arrangements)[levels(df$living_arrangements) %in% c("Alternate between parents and partner", "College or student accomodation")] <- "Other" # 如果你的living_arrangements是字符类型,用下面的代码: # df$living_arrangements[df$living_arrangements %in% # c("Alternate between parents and partner", "College or student accomodation")] <- "Other" # 2. 生成列联表 result <- as.data.frame.matrix(table(df$living_arrangements, df$loneliness_level)) # 调整列名匹配你给出的示例结构 result <- cbind(living_arrangements = rownames(result), result) rownames(result) <- NULL
平时习惯用管道式操作选方案1即可,追求轻量化运行选方案2即可。
内容的提问来源于stack exchange,提问作者Tony H
相关产品推荐
相关产品推荐

