如何按另一变量汇总变量值:实现pivot from long to vector
按变量分组汇总另一变量的唯一值为向量(类宽表转换)
当然可以实现这种分组汇总需求——按var1分组,提取var2的唯一值并整理成向量/指定格式的字符串。以下是两种常用工具的实现方案:
R 实现(dplyr)
先构造示例数据,再通过分组+提取唯一值完成汇总:
library(dplyr) # 示例数据 df <- tibble( var1 = c(1,1,1,1,1,2,2,2,2), var2 = c(2,4,4,4,6,8,8,10,12) ) # 直接生成向量列表格式 result_list <- df %>% group_by(var1) %>% summarize(var2 = list(unique(var2))) %>% ungroup() # 转换为你需要的带括号的字符串格式 result_str <- result_list %>% mutate(var2 = paste0("(", paste(var2, collapse = ", "), ")"))
Python 实现(Pandas)
利用分组聚合结合lambda函数处理唯一值并格式化:
import pandas as pd import numpy as np # 示例数据 df = pd.DataFrame({ 'var1': [1,1,1,1,1,2,2,2,2], 'var2': [2,4,4,4,6,8,8,10,12] }) # 一步生成目标格式结果 result = df.groupby('var1')['var2'].agg( lambda x: f"({', '.join(map(str, np.unique(x)))})" ).reset_index()
两种方案都能得到你期望的输出:按var1分组后,var2列呈现该组下的唯一值集合。如果需要保留向量/列表对象而非字符串,去掉格式转换的步骤即可。
内容的提问来源于stack exchange,提问作者BoTz
相关产品推荐
相关产品推荐

