R 以有序格式将两列粘贴到新变量

R 以有序格式将两列粘贴到新变量,r,R,我有两列数据x1,x2,它们有共同的和不同的数据。我想将两列粘贴在一起,以+号分隔,并粘贴到一个新变量x3上,这样数据就按顺序排列,即编号最低的/字符元素总是出现在分隔符+之前。例如,这就是我想要的 ID x1 x2 x3 01 x*01:02 x*01:03 x*01:02+x*01:03 02 x*01:03 x*01:02 x*01:02+x*01:03 03 x*02:01 x*08:01

我有两列数据x1,x2,它们有共同的和不同的数据。我想将两列粘贴在一起,以+号分隔,并粘贴到一个新变量x3上,这样数据就按顺序排列,即编号最低的/字符元素总是出现在分隔符+之前。例如,这就是我想要的

ID    x1          x2         x3
01    x*01:02     x*01:03    x*01:02+x*01:03
02    x*01:03     x*01:02    x*01:02+x*01:03
03    x*02:01     x*08:01    x*02:01+x*08:01
04    x*08:01     x*02:01    x*02:01+x*08:01
当我跑的时候

df$x3 = paste(df$x1, df$x2, sep="+") 
ID 01至01的x3显示为

x3
x*01:02+x*01:03
x*01:03+x*01:02
x*02:01+x*08:01
x*08:01+x*02:01

如果x1和x2的结构如您所述,即两组由两个数字组成的集合,以:.分隔,则可以将x1和x2按:.分隔为两列,然后使用标准的数值比较按您认为合适的顺序对齐结果,如果需要,最后将输出转回字符串。这行得通吗?

如果x1和x2的结构如您所述,即两组两位数字之间用:,您可以按:,将x1和x2拆分为两列,然后使用标准的数字比较,按照您认为合适的顺序对齐结果,如果需要,最后将输出转换回字符串。这样行吗?

根据您的描述,按字母顺序排序应该行。您可以跨每行执行此操作,如下所示:

df$x3 <- apply(df[,2:3], 1, function(x) paste(sort(x), collapse = "+"))

根据你的描述,按字母顺序排序应该可以。您可以跨每行执行此操作,如下所示:

df$x3 <- apply(df[,2:3], 1, function(x) paste(sort(x), collapse = "+"))
我们可以使用混合排序

数据 我们可以使用混合排序

数据
这是时间专栏吗?使用哪一个较低的标准是什么?没有时间列。标准是最低的数字元素,例如x*01:01小于x*01:0301:01不是数字,因为:您是在:之后使用01还是在:之前我在冒号之前使用01如果您在冒号之前使用01,则无法区分01:02和01:03这是时间列吗?使用哪一个较低的标准是什么?没有时间列。标准是最低的数字元素,例如x*01:01小于x*01:0301:01不是数字,因为:你是在:之后使用01还是在:之前使用01我在冒号之前使用01如果你在冒号之前使用01,那么01:02和01:03无法区分我不确定你的意思。基本上,在粘贴函数之后,我需要另一个函数来订购x3数据。我不确定你的意思。基本上,在粘贴函数之后,我需要另一个函数来排序x3数据
df <- structure(list(ID = 1:4, x1 = c("x*01:02", "x*01:03", "x*02:01", 
"x*08:01"), x2 = c("x*01:03", "x*01:02", "x*08:01", "x*02:01"
)), row.names = c(NA, -4L), class = "data.frame")