数据框中的两个混合列

Two mixed columns in data frame

我有一个包含两个字符向量的数据框:

data.frame(
           matPA = c("PA66", "SB3", "PA66GF", "PA66", "SB2"), 
           matSB = c("SB1", "PA66", "SB1", "SB2", "PA66GF")
)

我想在正确的列中显示正确的字符,例如PA66 & PA66GF 到 matPA 和 SB2 & 3 到 matSB:

data.frame(
           matPA = c("PA66", "PA66", "PA66GF", "PA66", "PA66GF"), 
           matSB = c("SB1", "SB3", "SB1", "SB2", "SB2")
)

非常感谢。


d <- data.frame(
           matPA = c("PA66", "SB3", "PA66GF", "PA66", "SB2"), 
           matSB = c("SB1", "PA66", "SB1", "SB2", "PA66GF")
)

library(dplyr)

d2 <- apply( d, 1, function(r) {
    r[ order( grepl("^SB",r)) ]
}) %>% t %>% as.data.frame %>% setNames( names(d) )

也许像这样。

您可以使用 pmin/pmax :

df <- transform(df, matPA = pmin(matPA, matSB), matSB = pmax(matPA, matSB))
df

#   matPA matSB
#1   PA66   SB1
#2   PA66   SB3
#3 PA66GF   SB1
#4   PA66   SB2
#5 PA66GF   SB2