Подсчитать количество вхождений в два столбца обращений

#r #dataframe #count

#r #фрейм данных #количество

Вопрос:

У меня есть фрейм данных:

 ID   col1  col2  
1    LOY    A
2    LOY    B
3    LOY    B
4    LOY    B
5    LOY    A
 

Я хочу подсчитать количество вхождений уникальных значений в соответствии с col1 и col2. Итак, желаемый результат:

 event    count
loy-a      2
loy-b      3
 

Как я мог это сделать?

Ответ №1:

Вы также можете попробовать:

 library(dplyr)
#Code
new <- df %>% group_by(event=tolower(paste0(col1,'-',col2))) %>%
  summarise(count=n())
 

Вывод:

 # A tibble: 2 x 2
  event count
  <chr> <int>
1 loy-a     2
2 loy-b     3
 

Некоторые используемые данные:

 #Data
df <- structure(list(ID = 1:5, col1 = c("LOY", "LOY", "LOY", "LOY", 
"LOY"), col2 = c("A", "B", "B", "B", "A")), class = "data.frame", row.names = c(NA, 
-5L))
 

Ответ №2:

Вот вариант, при котором мы преобразуем столбцы в нижний регистр, затем получаем count и unite ‘col1’, ‘col2’ в один столбец ‘событие’

 library(dplyr)
library(tidyr)
df1 %>%
  mutate(across(c(col1, col2), tolower)) %>%
  count(col1, col2) %>%
  unite(event, col1, col2, sep='-')
 

-вывод

  #  event n
#1 loy-a 2
#2 loy-b 3
 

ПРИМЕЧАНИЕ: возвращает ожидаемый результат операции


Или с помощью base R

 with(df1, table(tolower(paste(col1, col2, sep='-'))))
 

данные

 df1 <- structure(list(ID = 1:5, col1 = c("LOY", "LOY", "LOY", "LOY", 
"LOY"), col2 = c("A", "B", "B", "B", "A")), 
class = "data.frame", row.names = c(NA, 
-5L))