r - 创建表比较两个数据框中的特定列?
问题描述
我有两个看起来像这样的数据框:
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"))
过,但它没有给我想要的东西。
会喜欢一些建议!提前致谢!
解决方案
基本上,您可以将两个数据框合并为一个,添加一个新列来标记它最初属于哪个数据框,然后您可以轻松地使用它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)
推荐阅读
- node.js - 电子邮件 Node.js 类型错误的基础
- sql - 将 SQL 查询复制并粘贴到 MS Word
- email - 使用命令行从应用程序在浏览器中打开 GMail 帐户
- c - 在linux shell脚本中用特殊字符替换文本?
- ruby-on-rails - 相册中所有照片的 Rails 标签
- java - LinkedList .equals vs == 整数上的运算符
- c++ - C ++用户定义的函数来填充数组
- r - 关于 nls 适合 R 的问题 - 为什么这是一个奇怪的适合?
- design-patterns - Controllers should contain all the requests from a specific entity or screen?
- mysql - 如何监控mysql中特定表的SELECT语句数?