【问题标题】:Pairwise analyse at once in r在r中一次成对分析
【发布时间】:2016-12-30 00:40:28
【问题描述】:

我有一个数据如下。对于每个站点,我都有一定数量的不同测量值(value1value2value3)。我的目标是执行,例如,对所有可能变量的所有可能对进行 Bartlett 测试(如 site id=1site id=2(以及所有值)、site id=1site id=3 等等)。 能否请您教我如何以自动方式进行操作,因为选择与 subset%in% 配对时,需要相当长的时间,而且似乎是错误的方式。

pair1 = subset(mydata,site id==1|site id==2),

pair2 = subset(mydata,site id==1|site id==3).

等等……

数据

 dput(el)
structure(list(nr = 1:62, site_id = c(1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), value1 = c(0.135956723, 0.244470396, 
0.986831591, 0.272748803, 0.089672362, 0.087918874, 0.29432428, 
0.281550906, 0.491512301, 0.202822283, 0.636965524, 0.439072133, 
0.512626669, 0.076218623, 0.537676093, 0.410301432, 0.704414491, 
0.028086268, 0.934842257, 0.319693894, 0.038503085, 0.724755387, 
0.933940599, 0.293119698, 0.206668204, 0.931947832, 0.570267962, 
0.153459278, 0.761549617, 0.168553595, 0.125666771, 0.072239583, 
0.585168488, 0.434769948, 0.693265848, 0.507971072, 0.784221012, 
0.625158967, 0.734257194, 0.745229936, 0.40953356, 0.070758169, 
0.468803818, 0.482476343, 0.329618097, 0.690907203, 0.043867132, 
0.335846451, 0.910523185, 0.337186798, 0.94565722, 0.468518602, 
0.269354849, 0.357422627, 0.660574954, 0.636926103, 0.558315665, 
0.489907305, 0.47082103, 0.808036842, 0.80682936, 0.486316865
), value2 = c(0.072786841, 0.53838031, 0.41372062, 0.927891345, 
0.681514932, 0.099571511, 0.356290822, 0.22791718, 0.222255425, 
0.274876628, 0.215780917, 0.679079775, 0.557144492, 0.768317182, 
0.209794907, 0.756651704, 0.950439091, 0.394732921, 0.477008544, 
0.248762115, 0.452692267, 0.479918885, 0.617401621, 0.107246095, 
0.968902896, 0.581772822, 0.654269288, 0.2403724, 0.309798716, 
0.305768959, 0.184387495, 0.035095852, 0.513505392, 0.976717695, 
0.713275402, 0.948746684, 0.44320735, 0.222039163, 0.440820346, 
0.914348945, 0.824638633, 0.392305879, 0.711367921, 0.013197053, 
0.990004958, 0.46783633, 0.368384378, 0.105245106, 0.01894147, 
0.351691108, 0.689240176, 0.281890828, 0.643299941, 0.295450072, 
0.929042677, 0.451298968, 0.087512416, 0.367461399, 0.101109718, 
0.388519279, 0.886552629, 0.371934921), value3 = c(0.862942279, 
0.306199206, 0.815403468, 0.120029065, 0.120468166, 0.97214058, 
0.605333252, 0.381385396, 0.501217425, 0.159266606, 0.712387132, 
0.532604745, 0.581300843, 0.764953483, 0.833804202, 0.576785884, 
0.739833632, 0.894288301, 0.533339352, 0.454653122, 0.141139261, 
0.820376994, 0.804809068, 0.097680334, 0.286965944, 0.610407569, 
0.084827216, 0.428986455, 0.080766377, 0.435308821, 0.93199262, 
0.453242669, 0.106639551, 0.191650525, 0.807339195, 0.53331683, 
0.101494804, 0.952323476, 0.243649472, 0.903883695, 0.265602323, 
0.364928386, 0.239852295, 0.388701845, 0.964790214, 0.031507745, 
0.922879901, 0.419279331, 0.923975616, 0.370413352, 0.159053801, 
0.450200201, 0.262717668, 0.258232936, 0.604593393, 0.625352584, 
0.086596067, 0.876201214, 0.95281149, 0.728431032, 0.232121342, 
0.53337486)), .Names = c("nr", "site_id", "value1", "value2", 
"value3"), row.names = c(NA, -62L), class = "data.frame")

【问题讨论】:

  • 有多少个不同的网站?
  • 数据图像不是很有帮助。没有人想全部输入。相反,请使用dput 为您的数据创建一个可打印的表格并输入您的问题。
  • 谢谢!非常感谢所有 cmets 和更正!
  • 我把数据库变小了,因为它很大。

标签: r combinations


【解决方案1】:

这可能不是很有效,但它可以满足您的需求。 首先,我们创建一个包含site_id 的所有可能组合的矩阵。然后,我们创建一个包含所有子集数据框的列表。最后,我们将该函数应用于所有值列的列表。

m1 <- combn(1:length(unique(el$site_id)),2)
l2 <- lapply(1:ncol(m1), function(i) el[el$site_id %in% m1[,i],])
final.list <- lapply(l2, function(i) sapply(i, function(j) bartlett.test(j, i$site_id)))

【讨论】:

  • 亲爱的 Sotos,感谢您的帮助。也许是个愚蠢的问题,但是我将如何从您提供的功能中获得结果。
  • 您能否阐明如何使用提供的功能获得结果。输入:>final.list 我得到的只是 [[1]] list() 提前谢谢!
  • 尝试先用问题中的示例运行它,然后再用整个 df 运行它。好好看看您的示例列名。我做了一个小改动
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-30
  • 1970-01-01
  • 2015-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多