这是一个想法:
library(tidyr)
library(dplyr)
t2 %>%
separate(test, into = c("cond1", "cond2"), sep = "v", remove = FALSE) %>%
gather(key, condition, -mode, -pvalue, -test) %>%
select(-key) %>%
left_join(t1 %>% select(-sd)) %>%
spread(condition, mean) %>%
setNames(c(names(.)[1:3], paste("mean", names(.)[4:6])))
这给出了:
# mode test pvalue mean A mean B mean C
#1 1 AvB 0.053444134 -0.6264538 0.1836433 NA
#2 1 AvC 0.077222819 -0.6264538 NA -0.8356286
#3 1 BvC 0.002678067 NA 0.1836433 -0.8356286
#4 2 AvB 0.076477591 1.5952808 0.3295078 NA
#5 2 AvC 0.173938169 1.5952808 NA -0.8204684
#6 2 BvC 0.068069799 NA 0.3295078 -0.8204684
如果您想将结果传递到 xtable 中,您可以添加:
... %>% xtable() %>% print(type = "html")
<!-- html table generated in R 3.2.1 by xtable 1.7-4 package -->
<!-- Fri Jun 19 18:45:36 2015 -->
<table border=1>
<tr> <th> </th> <th> mode </th> <th> test </th> <th> pvalue </th> <th> mean A </th> <th> mean B </th> <th> mean C </th> </tr>
<tr> <td align="right"> 1 </td> <td align="right"> 1.00 </td> <td> AvB </td> <td align="right"> 0.05 </td> <td align="right"> -0.63 </td> <td align="right"> 0.18 </td> <td align="right"> </td> </tr>
<tr> <td align="right"> 2 </td> <td align="right"> 1.00 </td> <td> AvC </td> <td align="right"> 0.08 </td> <td align="right"> -0.63 </td> <td align="right"> </td> <td align="right"> -0.84 </td> </tr>
<tr> <td align="right"> 3 </td> <td align="right"> 1.00 </td> <td> BvC </td> <td align="right"> 0.00 </td> <td align="right"> </td> <td align="right"> 0.18 </td> <td align="right"> -0.84 </td> </tr>
<tr> <td align="right"> 4 </td> <td align="right"> 2.00 </td> <td> AvB </td> <td align="right"> 0.08 </td> <td align="right"> 1.60 </td> <td align="right"> 0.33 </td> <td align="right"> </td> </tr>
<tr> <td align="right"> 5 </td> <td align="right"> 2.00 </td> <td> AvC </td> <td align="right"> 0.17 </td> <td align="right"> 1.60 </td> <td align="right"> </td> <td align="right"> -0.82 </td> </tr>
<tr> <td align="right"> 6 </td> <td align="right"> 2.00 </td> <td> BvC </td> <td align="right"> 0.07 </td> <td align="right"> </td> <td align="right"> 0.33 </td> <td align="right"> -0.82 </td> </tr>
</table>
数据
set.seed(1)
t1 <- data.frame(condition = rep(c("A","B","C"),times=2),
mode = rep(c(1,2),each=3),
mean = rnorm(6),
sd = rnorm(6))
t2 <- data.frame(mode = rep(c(1,2),each=3),
test = rep(c("AvB","AvC","BvC"),2),
pvalue = runif(6,0,0.2))