按ID拼接列中字符串:Tibble数据处理求助
按分组拼接非NA字符串并替换空内容
原始数据
# 你的原始tibble数据 df <- tibble( dep_code = c("10", "10", "10", "10", "10", "10", "11", "11", "11", "11", "11", "11", "12", "12", "12", "12", "12", "12"), dep_color = rep(1, 18), message = c("One", NA, "Two", NA, "Four", NA, NA, "Three", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA) )
需求说明
按dep_code分组,拼接message列的所有非NA字符串;对于无有效内容(全为NA)的分组,将message替换为自定义文本No message,最终得到分组汇总后的结果。
解决方案
使用dplyr包的分组汇总功能即可实现,summarise函数并未被弃用,正确代码如下:
library(dplyr) result_df <- df %>% # 按dep_code和dep_color分组(dep_color同组值一致,保留该列) group_by(dep_code, dep_color) %>% # 过滤NA后拼接字符串,汇总后取消分组状态 summarise( message = paste(na.omit(message), collapse = ""), .groups = "drop" ) %>% # 把空字符串替换为指定文本 mutate(message = ifelse(message == "", "No message", message))
运行结果
执行上述代码后得到的结果:
# A tibble: 3 × 3 dep_code dep_color message <chr> <dbl> <chr> 1 10 1 OneTwoFour 2 11 1 Three 3 12 1 No message
内容的提问来源于stack exchange,提问作者leo
相关产品推荐
相关产品推荐

