Укажите частоту появления одинаковых слов в одном столбце в R - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь проанализировать информацию в наборе данных Forbes 2000 крупнейших компаний 2017 года.

В наборе данных есть столбец с именем страна, который представляет страну происхождения для каждой компании в наборе данных. Я хотел бы отсканировать столбец, чтобы найти, в каких странах есть компонент в топ-2000. Затем посчитайте, сколько компаний в каждой из этих стран есть в списке топ-2000. В результате получается таблица с указанием страны и количества.

например, вывод:

Country       Count
USA             756
China           564
Japan           267
England         100
Sweden           45 
...             ...

Не совсем уверен, как добиться этого в R. Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 31 марта 2020

вот ранг рейтинга Forbes Top 20 2017 из немецкой Википедии



library(rvest)

url<-"https://de.wikipedia.org/wiki/Forbes_Global_2000"

# Return a data frame
Forbes_global = url  %>%
  read_html() %>%
  html_node(xpath = '//*[@id="mw-content-text"]/div/table[15]') %>%
  html_table(fill = TRUE)

Forbes_global<-Forbes_global[1:25,]



вот данные


> head(Forbes_global)
  Rang                       Name Logo                                    Land Umsatz (Mrd. $) Gewinn  (Mrd. $) Aktiva (Mrd. $) Marktwert (Mrd. $)
1   1.                       ICBC      China Volksrepublik Volksrepublik China           151,4             42,0          3473,2              229,8
2   2.    China Construction Bank      China Volksrepublik Volksrepublik China           134,2             35,0          3016,6              200,5
3   3.         Berkshire Hathaway        Vereinigte Staaten Vereinigte Staaten           222,9             24,1           620,9              409,9
4   4.             JPMorgan Chase        Vereinigte Staaten Vereinigte Staaten           102,5             24,2          2513,0              306,6
5   5.                Wells Fargo        Vereinigte Staaten Vereinigte Staaten            97,6             21,9          1943,4              274,4
6   6. Agricultural Bank of China      China Volksrepublik Volksrepublik China           115,7             27,8            2816              149,2
       Branche
1       Banken
2       Banken
3 Mischkonzern
4       Banken
5       Banken
6       Banken

вот результат:


rank<-Forbes_global %>% group_by(Land) %>% tally() %>% arrange(desc(n))

> rank
# A tibble: 7 x 2
  Land                                        n
  <chr>                                   <int>
1 Vereinigte Staaten Vereinigte Staaten      13
2 China Volksrepublik Volksrepublik China     7
3 Deutschland Deutschland                     1
4 Frankreich Frankreich                       1
5 Japan Japan                                 1
6 Korea Sud Südkorea                          1
7 Niederlande Niederlande                     1

непосредственно из Википедии:

url<-"https://en.wikipedia.org/wiki/Forbes_Global_2000"

top_countries = url  %>%
  read_html() %>%
  html_node(xpath = '//*[@id="mw-content-text"]/div/table[3]') %>%
  html_table(fill = TRUE)

top_countries$Companies<-gsub( "\\*","",top_countries$Companies)


вывод


> top_countries
   Rank                               Country Companies
1     1 United States (Including Puerto Rico)       525
2     2          China  (Including Hong Kong)       315
3     3                                 Japan       225
4     4       United Kingdom (including BOTS)        95
5     5    Germany  (Including Liechtenstein)        95
6     6           France  (Including DOM-TOM)        90
7     7                                 India        75
8     8                           South Korea        65
9     9             Canada (Excluding Québec)        65
10   10                             Indonesia        40
11   11                          Saudi Arabia        35
12   12                             Australia        35
13   13                                Sweden        20
14   14                                 Italy        20
15   15                                Russia        20
16   16                                 Spain        20
17   17                           Netherlands        20
18   18                                Turkey        20
19   19                               Ireland        18
20   20                                Brazil        18
21   21                              Thailand        16
22   22                          South Africa        12
23   23                               Denmark        12
24   24                              Malaysia        12
25   25                                Mexico        12
26   26                                Israel        11
27   27                             Singapore        11
28   28                               Algeria        11
29   29                  United Arab Emirates        11
30   30                               Belgium        10
31   31                                Norway        10
32   32                                 Chile        09
33   33                               Finland        09
34   34                                  Oman        07
35   35                               Austria        06
36   36                                 Qatar        06
37   37                                Taiwan        06
38   38                              Colombia        06
39   39                                Poland        06
40   40                           Philippines        05
41   41                              Portugal        05
42   42 Morocco  (Excluding & Including SADR)        05
43   43                               Vietnam        05
44   44                                 Libya        05
45   45                                Kuwait        04
46   46                             Argentina        03
47   47                               Nigeria        03
48   48                               Lebanon        02
49   49                                  Peru        02
50   50                                Greece        02
51   51                               Hungary        02
52   52                             Venezuela        02
53   53                                Cyprus        01
54   54                        Czech Republic        01
55   55                                Jordan        01
56   56                            Kazakhstan        01
57   57                                 Kenya        01
...