如何使用测量权重在R汇总表中创建子视图
我想创建一个汇总统计表,该表按地区报告每个变量的平均值/中位数,并在行中比较样本中美国出生和移民的统计数据以及总体数据。我不知道哪些代码可以让我以多种方式对表进行分组 以下是我迄今为止提出的代码:如何使用测量权重在R汇总表中创建子视图,r,datatable,row,cluster-analysis,R,Datatable,Row,Cluster Analysis,我想创建一个汇总统计表,该表按地区报告每个变量的平均值/中位数,并在行中比较样本中美国出生和移民的统计数据以及总体数据。我不知道哪些代码可以让我以多种方式对表进行分组 以下是我迄今为止提出的代码: #the data frame structure(list(AGE = c(40L, 23L, 24L, 18L, 30L, 33L, 32L, 63L, 22L, 24L), FAMSIZE = c(2L, 2L, 2L, 3L, 2L, 6L, 2L, 1L, 2L, 1L ), HYPER
#the data frame
structure(list(AGE = c(40L, 23L, 24L, 18L, 30L, 33L, 32L, 63L,
22L, 24L), FAMSIZE = c(2L, 2L, 2L, 3L, 2L, 6L, 2L, 1L, 2L, 1L
), HYPERTEN = c(0, 0, 0, 0, 0, 0, 0, 1, 0, 0), ALC = c(0, 2,
3, 0, 2, 0, 3, 0, 2, 2), region_group = c("Region 4", "Region 3",
"Region 4", "Region 3", "Region 1", "Region 2", "Region 1", "Region 2",
"Region 4", "Region 4"), PSU = c(2L, 1L, 2L, 2L, 2L, 1L, 2L,
2L, 1L, 2L), IMMIGRANT = c(0, 0, 0, 0, 0, 1, 0, 0, 0, 1), SAMPWEIGHT_MERGE = c(65, 860.4,
94.4, 9146, 170.8, 310.4, 755.2, 1053.4, 3964.4, 706.2), STRATA = c(6296L,
6165L, 6296L, 6224L, 6045L, 6083L, 6029L, 6073L, 6287L, 6247L
)), row.names = c(NA, 10L), class = "data.frame")
#weighting data frame so accounts for sample design
sample_survey<- as_survey_design(A, ids=PSU, weights=SAMPWEIGHT_MERGE, strata=STRATA, nest=TRUE)
options(survey.lonely.psu="remove")
#producing desired table
out1<-sample_survey %>%
group_by(region_group) %>%
summarise("Number of drinks (mean)"=survey_mean(ALC),
"Number of drinks (median)"=survey_median(ALC),"Hypertension"=survey_mean(HYPERTEN), "Family Size"=survey_mean(FAMSIZE), "Age"=survey_median(AGE))
out1=t(out1)
out1
#But here is what I hope the table can look like, such that the mean/median amongst all individuals, immigrant=0 and the immigrant=1 group are all displayed for each variable
[,1] [,2] [,3] [,4]
region_group "Region 1" "Region 2" "Region 3" "Region 4"
Number of drinks (all) "1.663778" "2.131566" "1.744107" "2.009594"
IMMIGRANT==0
IMMIGRANT==1
Number of drinks (mean)_se "0.1375124" "0.1245772" "0.0957500" "0.1199982"
Number of drinks (all) "1" "2" "1" "2"
IMMIGRANT==0
IMMIGRANT==1
Number of drinks (median)_se "0.0000000" "0.2531528" "0.0000000" "0.2533324"
Hypertension (all) "0.1340147" "0.1685102" "0.1834528" "0.1225418"
IMMIGRANT==0
IMMIGRANT==1
Hypertension_se "0.01623974" "0.01529678" "0.01463019" "0.01475651"
Family \n (all) Size "3.121062" "2.883905" "3.107202" "3.265012"
IMMIGRANT==0
IMMIGRANT==1
Family \n Size_se "0.11668906" "0.07435704" "0.08004129" "0.11138869"
Age (all) "30" "27" "30" "28"
IMMIGRANT==0
IMMIGRANT==1
Age_se "1.3615690" "1.0126110" "0.7616152" "0.7599972"
#数据帧
结构(列表)年龄=c(40L、23L、24L、18L、30L、33L、32L、63L、,
22L,24L),FAMSIZE=c(2L,2L,2L,3L,2L,6L,2L,1L,2L,1L
),HYPERTEN=c(0,0,0,0,0,0,0,1,0,0,0),ALC=c(0,2,
3,0,2,0,3,0,2,2),区域组=c(“区域4”,“区域3”,
“第4区”、“第3区”、“第1区”、“第2区”、“第1区”、“第2区”,
“区域4”,“区域4”),PSU=c(2L,1L,2L,2L,2L,1L,2L,
2L,1L,2L),移民=c(0,0,0,0,0,1,0,0,0,1),样本重量=c(65860.4,
94.49146170.8310.4755.21053.43964.4706.2),地层=c(6296L,
6165L、6296L、6224L、6045L、6083L、6029L、6073L、6287L、6247L
)),row.names=c(NA,10L),class=“data.frame”)
#对数据帧进行加权,以便考虑样本设计
抽样调查%
总结(“饮料数量(平均值)”=调查平均值(ALC),
“饮酒量(中位数)”=调查中位数(ALC),“高血压”=调查中位数(高血压),“家庭规模”=调查中位数(家庭规模),“年龄”=调查中位数(年龄))
out1=t(out1)
out1
#但这是我希望表格的样子,这样所有个体的平均值/中位数,移民=0和移民=1组都会显示每个变量
[,1] [,2] [,3] [,4]
区域组“区域1”“区域2”“区域3”“区域4”
饮品数目(全部)“1.663778”“2.131566”“1.744107”“2.009594”
移民==0
移民==1
饮料数量(平均值)_se“0.1375124”“0.1245772”“0.0957500”“0.1199982”
饮料数量(全部)“1”“2”“1”“2”
移民==0
移民==1
饮品数量(中位数)\ u使用“0.0000000”“0.2531528”“0.0000000”“0.253324”
高血压(全部)“0.1340147”“0.1685102”“0.1834528”“0.1225418”
移民==0
移民==1
高血压患者使用“0.01623974”“0.01529678”“0.01463019”“0.01475651”
系列\n(全部)尺寸“3.121062”“2.883905”“3.107202”“3.265012”
移民==0
移民==1
系列尺寸为“0.11668906”“0.07435704”“0.08004129”“0.11138869”
年龄(全部)“30”“27”“30”“28”
移民==0
移民==1
年龄为“1.3615690”“1.0126110”“0.7616152”“0.7599972”
谢谢大家! 您可以使用:
您可以使用:
@哦,对不起!谢谢你指出这一点,不知怎的,一个逗号漏掉了。应该运行正常now@akrun哎呀,对不起!谢谢你指出这一点,不知怎的,一个逗号漏掉了。现在应该正常运行了好的,谢谢你的建议。虽然我想知道这是否意味着/中位数占了调查权重?代码如何创建一个多变量表(即高血压、年龄)?我添加了HYPERTEN作为一个新变量的示例。看看如何考虑权重OK非常感谢!虽然这有点棘手,因为高血压是一个二元变量(个体有或没有),所以我不需要/不想计算该变量的中位数。请参阅我的编辑,您可以将
参数(w=SAMPWEIGHT\u MERGE)
传递到加权。平均值好,这很有意义!谢谢你调查此事。有没有办法计算加权中值呢?好的,谢谢你的想法。虽然我想知道这是否意味着/中位数占了调查权重?代码如何创建一个多变量表(即高血压、年龄)?我添加了HYPERTEN作为一个新变量的示例。看看如何考虑权重OK非常感谢!虽然这有点棘手,因为高血压是一个二元变量(个体有或没有),所以我不需要/不想计算该变量的中位数。请参阅我的编辑,您可以将参数(w=SAMPWEIGHT\u MERGE)
传递到加权。平均值好,这很有意义!谢谢你调查此事。有没有办法计算加权中值呢?
library(tables)
tables::tabular((ALC+HYPERTEN)*(IMMIGRANT=factor(IMMIGRANT)+1)*(weighted.mean+median)*Arguments(w = SAMPWEIGHT_MERGE)~(region=factor(region_group)), data=data)
region
IMMIGRANT Region 1 Region 2 Region 3
ALC 0 weighted.mean 2.816 0.0000 0.172
median 2.500 0.0000 1.000
1 weighted.mean NaN 0.0000 NaN
median NA 0.0000 NA
All weighted.mean 2.816 0.0000 0.172
median 2.500 0.0000 1.000
HYPERTEN 0 weighted.mean 0.000 1.0000 0.000
median 0.000 1.0000 0.000
1 weighted.mean NaN 0.0000 NaN
median NA 0.0000 NA
All weighted.mean 0.000 0.7724 0.000
median 0.000 0.5000 0.000