You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言:按指定规则重排多列字符值并补全缺失值

解决R语言数据列重排与缺失值填充问题

预处理数据

首先补全原始输入中的f行(原代码遗漏),并清理分割后元素的多余空格:

library(stringr)

a<-"cat,hammer,green"
b<-"hammer,green"
c<-"cat,hammer,green"
d<-"cat, green"
e<-"green,cat"
f<-"hammer"

# 构建完整数据框
df <- data.frame(Col1 = c(a, b, c, d, e, f))
# 分割字符串为多列
df_split <- as.data.frame(str_split(df$Col1, ",", simplify = TRUE))
# 去除所有元素的前后空格
df_split[] <- lapply(df_split, trimws)

按指定列顺序匹配填充

定义目标列顺序cat, hammer, green,逐行检查每个目标值是否存在,存在则保留,不存在填充NA:

target_cols <- c("cat", "hammer", "green")

# 逐行处理并转换为目标格式
result_df <- as.data.frame(t(apply(df_split, 1, function(row) {
  # 过滤空值
  valid_vals <- row[row != ""]
  # 匹配目标列
  sapply(target_cols, function(col) ifelse(col %in% valid_vals, col, NA))
})), stringsAsFactors = FALSE)

colnames(result_df) <- target_cols

最终输出

运行上述代码后,result_df即为期望格式:

cat hammer green
1 cat hammer green
2 <NA> hammer green
3 cat hammer green
4 cat <NA> green
5 cat <NA> green
6 <NA> hammer <NA>

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 17:35:26