我如何组合 3 列并获得它们的频率?
How do i combine 3 columns and get the frequency of them?
我目前有这个 table 给我:
City_Category Cat1 Cat2 Cat3
1 A 3 0 0
2 A 1 6 14
3 C 4 5 9
4 A 12 14 0
5 C 8 0 0
6 A 1 2 0
7 A 12 14 17
类别 1,2 和 3 下的数字是产品所属的类别。我如何将它们组合在一起以制作如下所示的 table?
City_Category Category Freq
1 A 0 4
2 B 0 0
3 C 0 2
...
17 A 14 3
尝试:
library(dplyr)
library(tidyr)
gather(df, name, Category, -City_Category) %>%
count(City_Category, Category, name = 'Freq')
输出:
# A tibble: 13 x 3
City_Category Category Freq
<fct> <int> <int>
1 A 0 4
2 A 1 2
3 A 2 1
4 A 3 1
5 A 6 1
6 A 12 2
7 A 14 3
8 A 17 1
9 C 0 2
10 C 4 1
11 C 5 1
12 C 8 1
13 C 9 1
使用的数据:
df <- structure(list(City_Category = structure(c(1L, 1L, 2L, 1L, 2L,
1L, 1L), .Label = c("A", "C"), class = "factor"), Cat1 = c(3L,
1L, 4L, 12L, 8L, 1L, 12L), Cat2 = c(0L, 6L, 5L, 14L, 0L, 2L,
14L), Cat3 = c(0L, 14L, 9L, 0L, 0L, 0L, 17L)), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7"))
如果由于某种原因您无法使用最新的 dplyr
版本,您可以:
gather(df, name, Category, -City_Category) %>%
count(City_Category, Category) %>%
rename(Freq = n)
我目前有这个 table 给我:
City_Category Cat1 Cat2 Cat3
1 A 3 0 0
2 A 1 6 14
3 C 4 5 9
4 A 12 14 0
5 C 8 0 0
6 A 1 2 0
7 A 12 14 17
类别 1,2 和 3 下的数字是产品所属的类别。我如何将它们组合在一起以制作如下所示的 table?
City_Category Category Freq
1 A 0 4
2 B 0 0
3 C 0 2
...
17 A 14 3
尝试:
library(dplyr)
library(tidyr)
gather(df, name, Category, -City_Category) %>%
count(City_Category, Category, name = 'Freq')
输出:
# A tibble: 13 x 3
City_Category Category Freq
<fct> <int> <int>
1 A 0 4
2 A 1 2
3 A 2 1
4 A 3 1
5 A 6 1
6 A 12 2
7 A 14 3
8 A 17 1
9 C 0 2
10 C 4 1
11 C 5 1
12 C 8 1
13 C 9 1
使用的数据:
df <- structure(list(City_Category = structure(c(1L, 1L, 2L, 1L, 2L,
1L, 1L), .Label = c("A", "C"), class = "factor"), Cat1 = c(3L,
1L, 4L, 12L, 8L, 1L, 12L), Cat2 = c(0L, 6L, 5L, 14L, 0L, 2L,
14L), Cat3 = c(0L, 14L, 9L, 0L, 0L, 0L, 17L)), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7"))
如果由于某种原因您无法使用最新的 dplyr
版本,您可以:
gather(df, name, Category, -City_Category) %>%
count(City_Category, Category) %>%
rename(Freq = n)