【问题标题】:How to run t-tests on a nested dataframe如何在嵌套数据帧上运行 t 检验
【发布时间】:2022-11-22 03:53:37
【问题描述】:

我有一个包含的数据框“数据”

  • 员工 ID(“CPNo”)- 整数
  • 性别-因素
  • 工作角色 - 因素
  • 国家-因素
  • 年薪 - int

我想对每个国家/地区的每个工作角色进行 t 检验,看看在相同工作角色和国家/地区的性别之间是否存在显着的薪酬差距。

我创建了一个嵌套数据框,其中包含至少有 20 个观察值的数据框:

dataNested <- data %>% 
  select(CPNo, Gender, JobRole, Country, AnnualSalaryLocal) %>% 
  nest(data = c(CPNo, Gender, AnnualSalaryLocal)) %>% filter(map_int(data, nrow) > 20)

我想对该嵌套数据框运行 t 检验:

dataNested %>% 
  mutate(t_test = map(data, ~t.test(.x$AnnualSalaryLocal ~ .x$Gender, var.eq=F, paired=F)))

现在,如果我运行代码,我会得到下表,它是一个包含我的 t 检验结果的嵌套数据框:

JobRole
<fctr>
JobStage
<fctr>
Country
<fctr>
data
<list>
t_test
<list>
76 Product Development  06  Ireland <tibble>    <S3: htest>
76 Product Development  06  Italy   <tibble>    <S3: htest>
82 Service Delivery 05  Italy   <tibble>    <S3: htest>
82 Service Delivery 06  Italy   <tibble>    <S3: htest>
82 Service Delivery 03  Mexico  <tibble>    <S3: htest>
83 Supply & Logistics   01  Mexico  <tibble>    <S3: htest>
76 Product Development  05  Poland  <tibble>    <S3: htest>

如果我想添加一个从我的“t_test”变量中提取 p.value 的新变量“sig”,我该如何编写语法?

【问题讨论】:

  • 如果您能向我们提供一些示例数据,将会更容易——否则无法有效地解决您的问题。但是,请尝试修改此行:mutate(t_test = map(data, ~t.test(.x$AnnualSalaryLocal ~ .x$Gender, var.eq=F, paired=F))) - 在t.test 之前添加波浪号
  • 谢谢,这只是为了发现我语法中的错误!

标签: r nested purrr stat


【解决方案1】:

有一个包,rstatix,一步完成你想要的:

library(rstatix)
data %>% t_test(Gender ~ Country + JobRole)

【讨论】:

  • 我收到以下错误消息:``` data %>% t.test(AnnualSalaryLocal ~ Gender + Country + JobRole) Error: !无法组合 Country <factor<10eca>> 和 CPNo <integer>。 ```
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多