#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))