Мы могли бы использовать base R
методы, использовать table
, чтобы получить частоту, сделать crossprod
, установить диагональные и нижние элементы треугольника в NA
и удалить строки NA
после преобразования в data.frame
m1 <- crossprod(table(df1))
m1[lower.tri(m1, diag = TRUE)] <- NA
subset(as.data.frame.table(m1), !is.na(Freq))
# Country Country.1 Freq
#4 DE FI 1
#7 DE SE 2
#8 FI SE 2
Данные
df1 <- structure(list(Group = c("Group1", "Group1", "Group2", "Group2",
"Group2", "Group3", "Group3"), Country = c("SE", "DE", "SE",
"DE", "FI", "SE", "FI")), .Names = c("Group", "Country"),
class = "data.frame", row.names = c(NA, -7L))