![](/img/trans.png)
[英]How to group by all variables except some and add a group id to every observation
[英]How can I define variables as a comparator group including all variables except X?
我有一个数据库,其中一列具有不同的发生国家/地区,另一列具有事件发生的类型(3000 多个条目),其结构如下所示:
#> country event
#> 1 USA Abdominal discomfort
#> 2 USA Abdominal discomfort
#> 3 Canada Vomiting
#> 4 UK Alopecia
#> 5 Hungary Agitation
#> 6 France Abscess
所以,正如您想象的那样,我有数千个不同的变量!
我想像这样计算列联表的值:
X事件 | 不是 X 事件 | |
---|---|---|
小号 | 一种 | b |
C | c | d |
S = 感兴趣的子集(例如,美国) C = 比较对象(数据库中的所有其他国家/地区)
我的主要问题是如何创建一个代码,允许我创建一个新变量来定义数据库中除美国以外的所有国家/地区的组,或者一个新变量来定义不是“X 事件”的所有事件的组,所以我能得到b和d的值吗?
这项研究的最终目标是看看是否有一个确定的事件在一个国家比其他国家发生得更频繁
谢谢,对不起,如果我没有以最正确的方式表达自己,我对 RStudio 和编码完全陌生。
听起来您的数据是这种格式:
df <- data.frame(country = c('USA', 'USA', 'Canada', 'UK', 'UK', 'France',
'Hungary', 'Hungary', 'France', 'Canada'),
event = c('Vomiting', 'Agitation', 'Headache', 'Headache',
'Abdominal pain', 'Vomiting', 'Agitation',
'Abdominal pain', 'Anaphylaxis', 'Vomiting'))
df
#> country event
#> 1 USA Vomiting
#> 2 USA Agitation
#> 3 Canada Headache
#> 4 UK Headache
#> 5 UK Abdominal pain
#> 6 France Vomiting
#> 7 Hungary Agitation
#> 8 Hungary Abdominal pain
#> 9 France Anaphylaxis
#> 10 Canada Vomiting
在这种情况下,每个国家/地区的每个条件都需要一个表,这可能会导致处理数十个或数百个不同的表(例如,即使是这个小玩具示例也会有 25 个表)。
为了帮助总结您的数据,您可以通过在lapply
调用中创建每个表并进行 Fisher 检验以从中提取统计数据,从而直接获得每个国家/地区每个条件的优势比和 p 值。 然后你可以把整个东西变成一个数据框:
`row.names<-`(do.call(rbind, lapply(sort(unique(df$event)), function(x) {
do.call(rbind, lapply(sort(unique(df$country)), function(y) {
tab <- table(df$country == y, df$event == x)
ft <- fisher.test(tab)
data.frame(country = y, condition = x, event = tab[2, 2], no_event = tab[2, 1],
ROW_event = tab[1, 2], ROW_no_event = tab[1, 1],
odds_ratio = ft$estimate,
p_value = ft$p.value)
}))
})), NULL)
#> country condition event no_event ROW_event ROW_no_event odds_ratio
#> 1 Canada Abdominal pain 0 2 2 6 0.000000
#> 2 France Abdominal pain 0 2 2 6 0.000000
#> 3 Hungary Abdominal pain 1 1 1 7 5.291552
#> 4 UK Abdominal pain 1 1 1 7 5.291552
#> 5 USA Abdominal pain 0 2 2 6 0.000000
#> 6 Canada Agitation 0 2 2 6 0.000000
#> 7 France Agitation 0 2 2 6 0.000000
#> 8 Hungary Agitation 1 1 1 7 5.291552
#> 9 UK Agitation 0 2 2 6 0.000000
#> 10 USA Agitation 1 1 1 7 5.291552
#> 11 Canada Anaphylaxis 0 2 1 7 0.000000
#> 12 France Anaphylaxis 1 1 0 8 Inf
#> 13 Hungary Anaphylaxis 0 2 1 7 0.000000
#> 14 UK Anaphylaxis 0 2 1 7 0.000000
#> 15 USA Anaphylaxis 0 2 1 7 0.000000
#> 16 Canada Headache 1 1 1 7 5.291552
#> 17 France Headache 0 2 2 6 0.000000
#> 18 Hungary Headache 0 2 2 6 0.000000
#> 19 UK Headache 1 1 1 7 5.291552
#> 20 USA Headache 0 2 2 6 0.000000
#> 21 Canada Vomiting 1 1 2 6 2.645752
#> 22 France Vomiting 1 1 2 6 2.645752
#> 23 Hungary Vomiting 0 2 3 5 0.000000
#> 24 UK Vomiting 0 2 3 5 0.000000
#> 25 USA Vomiting 1 1 2 6 2.645752
#> p_value
#> 1 1.0000000
#> 2 1.0000000
#> 3 0.3777778
#> 4 0.3777778
#> 5 1.0000000
#> 6 1.0000000
#> 7 1.0000000
#> 8 0.3777778
#> 9 1.0000000
#> 10 0.3777778
#> 11 1.0000000
#> 12 0.2000000
#> 13 1.0000000
#> 14 1.0000000
#> 15 1.0000000
#> 16 0.3777778
#> 17 1.0000000
#> 18 1.0000000
#> 19 0.3777778
#> 20 1.0000000
#> 21 1.0000000
#> 22 1.0000000
#> 23 1.0000000
#> 24 1.0000000
#> 25 1.0000000
由reprex package (v2.0.1) 创建于 2022-04-14
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.