R语言如何删除每列重复值并保留列名合并所有唯一值
R语言按列去重并保留列名实现方案
你之前的写法是把整个矩阵的所有元素提取为一维向量后全局去重,自然会丢失元素和对应列的绑定关系,正确的做法是按列遍历单独去重后再拼接:
基础R实现(无需额外安装包)
# 你的示例数据 data<-structure(c(10L, 10L, 11L, 11L, 5L, 5L, 3L, 5L), .Dim = c(2L, 4L), .Dimnames = list(c("d1", "m1"), c("year2036", "year2037", "year2038", "year2039"))) # 核心处理逻辑 out <- unlist(lapply(colnames(data), function(col_name) { # 单列取唯一值 unique_vals <- unique(data[, col_name]) # 给当前列的所有唯一值绑定对应列名 names(unique_vals) <- rep(col_name, length(unique_vals)) return(unique_vals) }))
输出结果验证
打印out即可得到你需要的命名向量:
year2036 year2037 year2038 year2039 year2039 10 11 5 3 5
和你给出的期望输出结构完全一致:
target_out <- structure(c(10, 11, 5, 3, 5), .Names = c("year2036", "year2037", "year2038", "year2039", "year2039")) identical(out, target_out) # 运行返回 TRUE
内容的提问来源于stack exchange,提问作者Hüsamettin Tayşi
相关产品推荐
相关产品推荐

