将成对数据转换为符合prefmod的列顺序

将成对数据转换为符合prefmod的列顺序,r,dplyr,R,Dplyr,prefmod包需要以下格式的成对比较: (AB)(AC)(BC)(AD)(BD)(CD)等 我试图找出如何有效地将长格式数据帧转换成这种格式。即: dat <- combn(c("A","B","C","D"),2) %>% t() %>% as.data.frame() %>% mutate(V3=round(runif(6))) 我正在努力解决的主要问题是一个正确排序数据的习惯用法。如果我可以将数据帧dat重新排序为如下所示,例如: V1 V2 V3 A B

prefmod包需要以下格式的成对比较:

(AB)(AC)(BC)(AD)(BD)(CD)等

我试图找出如何有效地将长格式数据帧转换成这种格式。即:

dat <- combn(c("A","B","C","D"),2) %>% t() %>% 
as.data.frame() %>% 
mutate(V3=round(runif(6)))
我正在努力解决的主要问题是一个正确排序数据的习惯用法。如果我可以将数据帧dat重新排序为如下所示,例如:

V1 V2 V3
A  B  0
A  C  1
B  C  0
A  D  0
B  D  1
C  D  0
…那我就可以走了

dat %>% unite("V1V2",c("V1","V2")) %>% 
column_to_rownames(var="V1V2") %>% t()

…但我陷入困境的地方是,我无法想出一个习惯用法来按照prefmod想要的方式重新排列数据帧的行。模式(AB)(AC)(BC)(AD)(BD)(CD)到底是什么?我如何通过编程生成该顺序?

dat[order(dat$V2,dat$V1),]
?我在文档中没有找到订单规范,但它是否可能从第二个变量向后反向排序?就像所有的D,然后是所有的C,第一个变量的顺序是一致的?此外,这些比较是针对特定订单的吗?如果是这样的话,
combn
在这里是错误的,那么你的问题是什么呢?
paste0(“(”,combn(c(“A”,“B”,“c”,“D”),2,paste0,collapse=”“),”),collapse=“”)
??这就是你需要的还是你正在寻找的
do.call(paste0,c(“,dat[-3],”),collapse=“”)
??或者你需要它在一个链中:
combn(c(“a”、“B”、“c”、“D”),2)%%>%t()%%>%as.data.frame()%%>%mutate(V3=round(runif(6)),s=paste0(“,invoke(paste0,)”)
??你的问题到底是什么?啊,穆迪·斯基普的答案正是我想要的。真不敢相信我想不出来。。。
dat %>% unite("V1V2",c("V1","V2")) %>% 
column_to_rownames(var="V1V2") %>% t()