将成对数据转换为符合prefmod的列顺序
prefmod包需要以下格式的成对比较: (AB)(AC)(BC)(AD)(BD)(CD)等 我试图找出如何有效地将长格式数据帧转换成这种格式。即:将成对数据转换为符合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
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()