簡體   English   中英

如何合並3列並獲取它們的頻率?

[英]How do i combine 3 columns and get the frequency of them?

我目前有這張桌子給我:

   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下的數字是產品所屬類別的一種。 如何將它們組合在一起以制作如下表格?

    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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM