我想对R中的数据执行双样本t检验 . 鉴于两个高维数据框,我需要以某种方式遍历所有行的匹配列( Headers 中的String colnames())并执行测试每列对 - 分别来自df1和df2 . 问题是数据帧中的列不是正确的顺序,即col1形式df1与df2中的col1不匹配,df2具有df1中不存在的其他列 . 我从来没有使用R来完成这些任务,我想知道是否有一个快速而方便的解决方案来在t测试的数据帧中找到匹配的列对 .
我考虑过for循环,但我认为这对于大型数据帧来说效率非常低 .
预先感谢您的任何帮助 .
*EDITED-------Two small example dataframes, df1 and df2--------------------------------
**** **** DF1
"Row\Column" "A2" "A1" "A4" "A3"
"id_1" 10 20 0 40
"id_2" 5 15 25 35
"id_3" 8 0 12 16
"id_4" 17 25 0 40
**** **** DF2
"Row\Column" "A3" "A8" "A5" "A6" "A1" "A7" "A4" "A2"
"id_1" 0 2 0 4 0 1 2 3
"id_2" 1 5 8 3 4 5 6 7
"id_3" 2 10 6 9 8 9 10 11
"id_4" 7 2 10 2 55 0 0 0
"id_5" 0 1 0 0 9 1 3 4
"id_6" 8 0 1 2 7 2 3 0
匹配列只是df1中的列名与df2中的列名匹配 . 例如,df1和df2中的两个匹配列是e . G . “A1”和“A1”,“A2”和“A2”......你明白了......
2 回答
没有可重复的例子,很难给你一个好的答案 . 您还需要定义
matching
列的含义 .这里有2个data.frames的例子,它们有一些共同的列名 .
然后我定义了
t.test
的包装器,以限制例如p值的输出和自由度 .然后使用
sapply
迭代我使用的常见列intersect
mapply is the function you are looking for.
如果你的
data.frame
的列匹配,你可以简单地使用但是,由于它们没有,您需要以某种方式确定
df1
的哪一列与df2
的哪一列一致 . 幸运的是,R
中的索引选项很聪明,如果您输入列名称的向量(集合),您将按给定的顺序返回这些列 . 这让生活变得轻松 .请注意
matchingNames
有一些顺序现在看看当你使用matchingNames
向量作为df1和df2的每列的索引时会发生什么(还要注意列顺序)因此,我们现在有两个data.frames具有正确匹配的列,我们可以使用它们
mapply
.