#r
Вопрос:
Используя приведенный ниже пример фрейма данных df
:
library(dplyr)
df <- data.frame(ID=c("A", "A", "B", "C", "C", "C"),
Color=c("red", "green", "red", "red", "blue", "red"),
Size=c("s", "s", "m", "m", "s", "m"),
Country=c("UK", "US", "US", "US", "AUS", "CA")) %>%
dplyr::arrange(across(everything()))
df
ID Color Size Country
1 A green s US
2 A red s UK
3 B red m US
4 C blue s AUS
5 C red m CA
6 C red m US
Я суммирую количество ID
элементов на Color
, а также на Size
и Country
в следующем формате, используя tableby
функцию из arsenal
пакета:
library(arsenal)
tableby(Color ~ Size Country, df, test=F, total=F) %>%
summary()
| | blue (N=1) | green (N=1) | red (N=4) |
|:---------------------|:----------:|:-----------:|:---------:|
|**Size** | | | |
|amp;nbsp;amp;nbsp;amp;nbsp;m | 0 (0.0%) | 0 (0.0%) | 3 (75.0%) |
|amp;nbsp;amp;nbsp;amp;nbsp;s | 1 (100.0%) | 1 (100.0%) | 1 (25.0%) |
|**Country** | | | |
|amp;nbsp;amp;nbsp;amp;nbsp;AUS | 1 (100.0%) | 0 (0.0%) | 0 (0.0%) |
|amp;nbsp;amp;nbsp;amp;nbsp;CA | 0 (0.0%) | 0 (0.0%) | 1 (25.0%) |
|amp;nbsp;amp;nbsp;amp;nbsp;UK | 0 (0.0%) | 0 (0.0%) | 1 (25.0%) |
|amp;nbsp;amp;nbsp;amp;nbsp;US | 0 (0.0%) | 1 (100.0%) | 2 (50.0%) |
Однако я не получаю количество уникальных ID
значений на коэффициент независимо от другого (например, есть только 2 уникальных ID
B
и C
с цветом red
и размером m
, хотя действительно есть 3 строки с цветом red
и размером m
).
Есть ли способ выполнить эту задачу?
Комментарии:
1. Но вы делаете группу по размеру и стране
2. Да, но я пытаюсь (1) сгруппировать цвет по размеру, (2) независимо от цвета по стране, а затем (3) получить формат таблицы.
3. Если он независим, то вам может понадобиться цикл
map(c("Size", "Country"), ~ tableby(reformulate(.x, response = 'Color'), df, test = FALSE, total = FALSE) %>% summary)