r-数据帧中的两个混合列



我有一个带有两个字符向量的数据帧:

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

最新更新