如何创建经dummy变量过滤、按countrycode分组的Value均值新列
操作方法
以下是不同常用工具的实现步骤:
Excel/WPS 表格
- 新增一列,列名设为
Mean - 在第一行数据的Mean单元格输入公式:
=AVERAGEIFS($D:$D,$A:$A,A2,$C:$C,1),公式中D列对应Value列、A列对应countrycode列、C列对应dummy列,可根据你的实际列号调整 - 下拉公式填充所有行即可,如需将小数点改为逗号、调整保留小数位数,直接设置单元格格式即可。
Python(Pandas库)
import pandas as pd # 假设你的数据集已读取为DataFrame对象df # 先筛选dummy=1的行,按国家分组计算Value均值 dummy1_mean = df[df['dummy'] == 1].groupby('countrycode')['Value'].mean().rename('Mean') # 将计算好的均值匹配到原数据集的对应国家所有行 df = df.merge(dummy1_mean, on='countrycode', how='left') # 如需把小数点替换为逗号,可补充以下代码 df['Mean'] = df['Mean'].apply(lambda x: str(round(x, 3)).replace('.', ','))
R(dplyr包)
library(dplyr) # 假设你的数据集名为df df <- df %>% group_by(countrycode) %>% # 分组后仅计算当前组内dummy=1的行的Value均值 mutate(Mean = mean(Value[dummy == 1])) %>% ungroup() # 如需把小数点替换为逗号,可补充以下代码 df$Mean <- sub("\\.", ",", round(df$Mean, 3))
内容的提问来源于stack exchange,提问作者Passiv
相关产品推荐
相关产品推荐

