我有以下data.frame(请忽略行号):
row country measurement sampleNr Temperature
46 Germany P 379 28.800
47 Germany P 380 28.950
48 Germany P 381 28.850
139 Control P 181 28.265
140 Control P 182 28.205
141 Control P 183 28.095
142 Control P 382 28.440
143 Control P 383 28.090
144 Control P 384 28.265
190 France P 376 28.965
191 France P 377 29.000
192 France P 378 29.030
238 USA P 190 29.675
239 USA P 191 29.170
240 USA P 192 28.725
286 Cyprus P 373 29.750
287 Cyprus P 374 29.715
288 Cyprus P 375 30.295
334 Malta P 184 28.430
335 Malta P 185 28.140
336 Malta P 186 28.575
382 Japan P 187 29.220
383 Japan P 188 29.490
384 Japan P 189 29.240
46 Germany P 379 28.800
47 Germany P 380 28.950
48 Germany P 381 28.850
139 Control M 181 28.265
140 Control M 182 28.205
141 Control M 183 28.095
142 Control M 382 28.440
143 Control M 383 28.090
144 Control M 384 28.265
190 France M 376 28.965
191 France M 377 29.000
192 France M 378 29.030
238 USA M 190 29.675
239 USA M 191 29.170
240 USA M 192 28.725
286 Cyprus M 373 29.750
287 Cyprus M 374 29.715
288 Cyprus M 375 30.295
334 Malta M 184 28.430
335 Malta M 185 28.140
336 Malta M 186 28.575
382 Japan M 187 29.220
383 Japan M 188 29.490
384 Japan M 189 29.240
我想在Control Vs上对每个测量的任何其他国家执行t.test。有没有办法在t.test中使用公式函数来做到这一点?我认为这是不可能的,还有另一种有效的方法吗?
目前我正在使用for循环与哪个(函数)组合迭代测量组和国家(for循环中的for循环)然后获取值(对于控件大多为3,6)把它们放在t.test中。但这效率非常低。
答案 0 :(得分:0)
我们可以尝试
library(data.table)
dfN <- subset(df, country == "Control")
split(dfN1, dfN1$measurement)
rbindlist(Map(function(x, y) as.data.table(x)[, .(pval = t.test(Temperature, y$Temperature)$p.value) , country],
split(dfN1, dfN1$measurement), split(dfN, dfN$measurement)),
idcol = 'measurement')