两个数据帧之间的 T 检验并按 R 中的相似行分组
Posted
技术标签:
【中文标题】两个数据帧之间的 T 检验并按 R 中的相似行分组【英文标题】:T test between two dataframes and grouped by similar rows in R 【发布时间】:2019-11-08 11:03:17 【问题描述】:标题可能不是很清楚,但希望我能在这里更好地描述它。我有两个数据框,每个数据框都描述了不同类型客户的每月支出。例如,对于 A 客户,我有一个类似
的数据框year_month customer_id monthly_spending
201301 123 5.50
201301 124 2.30
201301 125 6.80
201302 123 8.30
201302 124 5.60
然后我也有 B 客户的类似数据框。理想情况下,我想要一个数据框,其中我有每个月的 T 测试结果,比较 A 客户和 B 客户之间的支出。如果所有数据都在一个数据框中,我可以使用 dplyr() 和 Broom() 来做到这一点。如果我有两个数据框,有没有办法做到这一点,或者将两者合并在一起然后进行 T 测试和 group_by year_month 更好?
【问题讨论】:
你只有 2 个数据框吗?如果是,我会简单地将它们合并并在之后进行 T 测试。 【参考方案1】:我同意 @Gainz 在 cmets 的概念。组合数据框可能是最简单的方法。但是,真正的合并类型操作,例如left_join()
等可能实际上不需要;只需使用bind_rows()
就足够了。
# read data from question
df_A <-
'year_month customer_id monthly_spending
201301 123 5.50
201301 124 2.30
201301 125 6.80
201302 123 8.30
201302 124 5.60' %>%
str_replace_all('[ ]++', '\t') %>%
read_tsv
# simulate more data for customer group "B"
df_B <-
df_A %>%
mutate(monthly_spending = monthly_spending + rnorm(5))
# combine the dataframes
df_all <-
bind_rows(list('A' = df_A, 'B' = df_B), .id = 'customer_type')
# use broom to do a tidy t.test()
df_all %>%
group_by(year_month) %>%
do(tidy(t.test(formula = monthly_spending ~ customer_type,
data=.)))
这里的合并数据框df_all
是
# A tibble: 10 x 4
customer_type year_month customer_id monthly_spending
<chr> <dbl> <dbl> <dbl>
1 A 201301 123 5.5
2 A 201301 124 2.3
3 A 201301 125 6.8
4 A 201302 123 8.3
5 A 201302 124 5.6
6 B 201301 123 6.25
7 B 201301 124 2.63
8 B 201301 125 7.04
9 B 201302 123 9.11
10 B 201302 124 5.11
做t.tests的结果是
# A tibble: 2 x 11
# Groups: year_month [2]
year_month estimate estimate1 estimate2 statistic p.value parameter conf.low
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 201301 -0.692 4.87 5.56 -0.341 0.750 3.93 -6.35
2 201302 -0.0453 6.95 7.00 -0.0334 0.979 1.02 -16.4
# … with 3 more variables: conf.high <dbl>, method <chr>, alternative <chr>
【讨论】:
我确实最终将两者合并在一起 - 这是最终最简单的方法 - 但我也能够通过您提供的答案到达那里!以上是关于两个数据帧之间的 T 检验并按 R 中的相似行分组的主要内容,如果未能解决你的问题,请参考以下文章
R语言可视化分面图多变量分组多水平t检验可视化多变量分组多水平分面箱图(faceting boxplot)并添加显著性水平在标签和绘图上边框之间添加15%的空格
R语言可视化分面图假设检验多变量分组t检验可视化多变量分组分面条形图(faceting bar plot)并添加显著性水平添加抖动数据点(jitter points)
R语言可视化分面图假设检验多变量分组t检验可视化多变量分组分面箱图(faceting boxplot)并添加显著性水平添加抖动数据点(jitter points)
R语言可视化分面图假设检验分组t检验可视化单变量分组分面箱图(faceting bar plot)添加误差条(error bar)添加p值添加抖动数据点