我正在处理变量组合。在我的模型中,组合(A,B)将类似于(B,A)。我想重塑数据,以便以相同的顺序获得相似的组合。
我尝试使用duplicated
函数并使用paste
函数,但是我没有解决问题。
这是我的第一张桌子:
df <- data.frame(V1=c("A","A","A","B","B","B"),
V2=c("B","C","D","A","D","A"))
这是我想获得的:
df2 <- data.frame(V1=c("A","A","A","B","B","B"),
V2=c("B","C","D","A","D","A"),
Test=c("OK","OK","OK","FALSE","OK","FALSE"),
V1b=c("A","A","A","A","B","A"),
V2b=c("B","C","D","B","D","B"))
答案 0 :(得分:2)
假设“正确顺序”是字母顺序,则可以使用
alphabetical <- function(x,y){x < y}
当x,y按字母顺序排序时返回true,否则返回false。
编辑:这是一个可行的解决方案:
df_sorted <- df %>% rowwise() %>% mutate(Test = alphabetical(as.character(V1),as.character(V2))) %>%
mutate(V1b = if (Test) {
as.character(V1)
} else {
as.character(V2)
}) %>%
mutate(V2b = if (Test) {
as.character(V2)
} else {
as.character(V1)
})
答案 1 :(得分:1)
使用dplyr
,您可以执行以下操作:
df %>%
mutate(V1b = pmin(V1, V2),
V2b = pmax(V1, V2),
Test = paste0(V1, V2) != paste0(V1b, V2b))
V1 V2 V1b V2b Test
1 A B A B FALSE
2 A C A C FALSE
3 A D A D FALSE
4 B A A B TRUE
5 B D B D FALSE
6 B A A B TRUE