我想计算给定行中可能具有不同顺序的实例的出现次数。
df:
Col1
A;B;C
C;B;A
A;D
A;C;B
D;A
D;C
df_result:
Col freq
A;B;C 3
A;D 2
D;C 1
最佳答案
在处拆分列
,循环遍历list
,排序
,粘贴
元素,得到table
中的频率计数并转换为 base R
data.frame
as.data.frame(table(sapply(strsplit(df$Col1, ";"), \(x)
paste(sort(x), collapse = ";"))))
-输出
Var1 Freq
1 A;B;C 3
2 A;D 2
3 C;D 1
或者在 tidyverse
中使用 separate_rows
和 count
library(dplyr)
library(tidyr)
library(stringr)
df %>%
mutate(rn = row_number()) %>%
separate_rows(Col1) %>%
group_by(rn) %>%
summarise(Col1 = str_c(sort(Col1), collapse = ";")) %>%
count(Col1, name = 'Freq')
# A tibble: 3 × 2
Col1 Freq
<chr> <int>
1 A;B;C 3
2 A;D 2
3 C;D 1
df <- structure(list(Col1 = c("A;B;C", "C;B;A", "A;D", "A;C;B", "D;A",
"D;C")), class = "data.frame", row.names = c(NA, -6L))
https://stackoverflow.com/questions/72971126/