比较一列中的字符串而不考虑字符的顺序,如果相等,则使它们在R中相同(相同的顺序)

时间:2018-12-03 19:51:59

标签: r string

我的数据框具有(8211个观察值),但是下面是一个简化的示例。如果我在R中有以下数据帧

Var1  Freq
a/b/e 1 
b/a/e 2
a/c/d 3
d/c/a 1

如何获取以下数据框:

Var1    Freq
a/b/e   3
a/c/d   4

1 个答案:

答案 0 :(得分:1)

这是一种方法

df1[, "Var1"] <- sapply(strsplit(df1$Var1, "/"), function(x) paste0(sort(x), collapse = "/"))
aggregate(Freq ~ Var1, df1, FUN = sum)
#   Var1 Freq
#1 a/b/e    3
#2 a/c/d    4

我们使用strsplitVar1上拆分列"/"。这将返回一个字符向量列表,我们sortpaste再回到aggregate

数据

df1 <- structure(list(Var1 = c("a/b/e", "a/b/e", "a/c/d", "a/c/d"), 
    Freq = c(1L, 2L, 3L, 1L)), .Names = c("Var1", "Freq"), row.names = c(NA, 
-4L), class = "data.frame")