首页 > 解决方案 > 创建表比较两个数据框中的特定列?

问题描述

我有两个看起来像这样的数据框:

id<-c(1,2,3,4)
age_group<-c(17-24 years,25-55 years,17-24 years,17-24 years)
gender<-c(male,male,female,female)
marital_status<-c(partnered,single,single,partnered)
education<-c(high school,university,university,university)
df1<-data.frame(id,age_group,gender,marital_status,education)

id<-c(2,3,4)
age_group<-c(25-55 years,17-24 years,17-24 years)
gender<-c(male,female,female)
marital_status<-c(single,single,partnered)
education<-c(university,university,university)
df2<-data.frame(id,age_group,gender,marital_status,education)

我可以CreateTableOne(vars = listVar, data = df1, factorVars = catVar)在每个数据帧包上使用代码(listVar 和 catVar 的内容作为上面的变量)来获取 n 和 %:

                                     Overall     
  n                                           400         
  age_group (%)                                           
   17-24 years                              300 ( 75.0) 
   25-55 years                              100 ( 25.9) 
  gender (%)                                     
   Male                                     200 ( 50.0) 
   Female                                   200 ( 50.0) 
  marital_status (%)                    
   Partnered                                200 ( 50.0) 
   Single                                   200 ( 50.0) 
  education (%)                                  
   high school                              100 ( 25.0) 
   University                               300 ( 75.0) 

但我想通过选择特征来比较我的两个数据框以获得这样的输出:

  dataframe                                   df1               df2             p test         
  n                                           400               300
  age_group (%)                                                                 0.949
   17-24 years                              300 ( 75.0)        200 ( 66.7)
   25-55 years                              100 ( 25.9)        100 ( 33.3)
  gender (%)                                                                    0.998
   Male                                     200 ( 50.0)        150 ( 50.0)       
   Female                                   200 ( 50.0)        150 ( 50.0)

我确实尝试compare_table = compare_df(df1, df2, c("age_group","gender"))过,但它没有给我想要的东西。

会喜欢一些建议!提前致谢!

标签: r

解决方案


基本上,您可以将两个数据框合并为一个,添加一个新列来标记它最初属于哪个数据框,然后您可以轻松地使用它CreateTableOne来输出您想要的内容。

以下是代码:

df1$df <- c("df1")
df2$df <- c("df2")
bigdf <- rbind(df1,df2)

res <- tableone::CreateTableOne(vars = c("age_group","gender"), strata = "df",data = bigdf,factorVars = c("age_group","gender"))
print(res,showAllLevels = T)

结果


推荐阅读