R中按字母顺序对每一行字符串进行排序

2024-05-26

我环顾四周,似乎找不到解决这个问题的好方法。

我有一个包含行名称的列。我想按字母顺序对每一行进行排序,以便稍后可以识别具有相同名称但顺序不同的行。

数据如下:

names <- c("John D., Josh C., Karl H.",
        "John D., Bob S., Tim H.",
        "Amy A., Art U., Wes T.",
        "Josh C., John D., Karl H.")

var1 <- rnorm(n = length(names), mean = 0, sd = 2)
var2 <- rnorm(n = length(names), mean = 20, sd = 5)

df <- data.frame(names, var1, var2)
df

                      names       var1     var2
1 John D., Josh C., Karl H. -0.3570142 15.58512
2   John D., Bob S., Tim H. -3.0022367 12.32608
3    Amy A., Art U., Wes T. -0.6900956 18.01553
4 Josh C., John D., Karl H. -2.0162847 16.04281

例如,第 4 行将被排序为与第 1 行类似。第 2 行将被排序为 Bob、John 和 Tim。

我试过了sort(df$names)但这只是将所有行中的名称按字母顺序排序。


With dplyr, 你可以试试:

df %>%
 rowwise() %>%
 mutate(names = paste(sort(unlist(strsplit(names, ", ", fixed = TRUE))), collapse = ", "))

  names                       var1  var2
  <chr>                      <dbl> <dbl>
1 John D., Josh C., Karl H. -0.226  19.9
2 Bob S., John D., Tim H.    0.424  24.8
3 Amy A., Art U., Wes T.     1.42   25.0
4 John D., Josh C., Karl H.  5.42   20.4

样本数据:

df <- data.frame(names, var1, var2,
                 stringsAsFactors = FALSE)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R中按字母顺序对每一行字符串进行排序 的相关文章

随机推荐