能否仅通过pvt_edu、pvt_sex、pvt_age表还原原始df数据表?
问题:能否用三张汇总表还原与原始df结构完全一致的表格?
能否仅利用pvt_edu、pvt_sex、pvt_age这三张汇总表的信息,还原出与原始df数据表结构完全一致的表格?以下是示例代码,尝试用GPT生成的表格与生成这些汇总表的原始df结构不符。
library('tidyverse') sex <- c('M','F') age <- c('18-25','26-34','35-50','51-65','66-99') education <- c("No education", "Primary", "Secondary") residence <- c('village','town','city') size=150 df <- data.frame(sex=sample(sex,size,T) ,age=sample(age,size,T) ,education=sample(education,size,T) ,residence=sample(residence,size,T) ) pvt_age <- df %>% group_by(age,residence) %>% count pvt_sex <- df %>% group_by(sex,residence) %>% count pvt_education <- df %>% group_by(education,residence) %>% count
解答
不能。这三张汇总表仅记录了「年龄-居住地」「性别-居住地」「教育水平-居住地」两两组合的频数,完全丢失了原始数据中性别、年龄、教育水平三个维度之间的关联信息,因此无法还原出与原始df完全一致的个体层面数据。
举个简单例子:pvt_sex告诉你城市里有多少男性和女性,pvt_age告诉你城市里各年龄组的人数,但你无法知道这些男性分别属于哪个年龄组、对应什么教育水平——因为三张表没有记录这些属性的交叉对应关系。
如果只是需要结构一致的表格(列名、列类别相同,各维度频数匹配),可以生成满足汇总表统计规则的模拟数据,但这类数据的个体属性组合是随机匹配的,和原始df的真实数据对应关系完全不同。示例代码如下:
library(tidyverse) # 定义各维度的类别(与原始数据一致) sex <- c('M','F') age <- c('18-25','26-34','35-50','51-65','66-99') education <- c("No education", "Primary", "Secondary") residence <- c('village','town','city') # 假设已有三张汇总表(这里用原代码生成的作为示例) pvt_age <- df %>% group_by(age,residence) %>% count pvt_sex <- df %>% group_by(sex,residence) %>% count pvt_education <- df %>% group_by(education,residence) %>% count # 按居住地拆分,生成满足各维度频数的模拟数据 simulated_df <- map_dfr(residence, function(place) { # 提取当前居住地的各维度频数 age_counts <- pvt_age %>% filter(residence == place) %>% pull(n) sex_counts <- pvt_sex %>% filter(residence == place) %>% pull(n) edu_counts <- pvt_education %>% filter(residence == place) %>% pull(n) # 生成各维度的样本列表 age_samples <- rep(pvt_age$age[pvt_age$residence == place], age_counts) sex_samples <- rep(pvt_sex$sex[pvt_sex$residence == place], sex_counts) edu_samples <- rep(pvt_education$education[pvt_education$residence == place], edu_counts) # 随机打乱后组合(因无关联信息,只能随机匹配) tibble( sex = sample(sex_samples), age = sample(age_samples), education = sample(edu_samples), residence = place ) })
内容的提问来源于stack exchange,提问作者knrd_f1
相关产品推荐
相关产品推荐

