如何找到最大值的观察?

时间:2018-02-05 05:15:31

标签: r

我有数据框af.df. Country值是countries的名称,数字是它们在数据中显示的次数。

> table(af.df$country)

          Algeria                 Benin              Botswana 
              109                   148                   139 
     Burkina Faso               Burundi              Cameroon 
              115                   122                    13 
       Cape Verde                 Egypt                 Gabon 
              149                   135                   107 
            Ghana                Guinea           Ivory Coast 
              259                   131                    63 
            Kenya               Lesotho               Liberia 
              260                   139                   115 
       Madagascar                Malawi                  Mali 
              120                   270                   129 
        Mauritius               Morocco            Mozambique 
              140                   121                   293 
          Namibia                 Niger               Nigeria 
              120                   125                   243 
São Tomé and Príncipe           Senegal          Sierra Leone 
              143                   129                   135 
     South Africa                 Sudan             Swaziland 
              269                   119                   134 
         Tanzania                  Togo               Tunisia 
              141                   137                   153 
           Uganda                Zambia              Zimbabwe 
              260                   123                   247 

如何提取max值? (这是莫桑比克,293?)

如果我使用max,则会拉出:

> max(af.df$country)
[1] "Zimbabwe"

有人可以解释为什么会这样吗?

3 个答案:

答案 0 :(得分:1)

让我们考虑cyl数据集中mtcars的示例。

table(mtcars$cyl)

 4  6  8 
11  7 14 

现在,如果您想知道上面table()输出中可用的最大数量,那么只需使用max

max(table(mtcars$cyl))

[1] 14

如果您想知道最大数量以及此计数所属的值,那么您可以尝试sort

sort(table(mtcars$cyl), decreasing = T)[1]

 8 
14 

希望这有帮助!

答案 1 :(得分:0)

在你的情况下,max(af.df $ country)返回字符列表值的最大值(=到最后一个字母顺序)。如果你想要一个table()的最大值。我建议你使用这个技巧:

table_country <- table(af.df$country)
names(table_country)[table_country == max(table_country)]

希望能够解决你的问题。

Gottavianoni

答案 2 :(得分:0)

table(af.df$country)[which.max(af.df$country)]应该有理想的结果。

这是一个例子,抽样100个随机小写字母。您可以看到u是最常见的字母:

> set.seed(1)
> dat = sample(letters, 100, TRUE)
> table(dat)
dat
a b c d e f g h i j k l m n o p q r s t u v w x y z 
2 3 3 3 2 4 6 1 6 5 6 4 7 2 2 2 5 4 5 3 8 4 5 4 3 1 
> table(dat)[which.max(table(dat))]
u 
8 

which.max(table(dat))本身返回最常见条目的位置:

> which.max(table(dat))
 u 
21 

有一点需要注意,which.max会返回向量的第一个最大值。这可能就是你想要的。如果你想要所有最大值,那么显式地找到最大值并查找表中的条目等于它。以下是字母表中带有两个最常见字母的示例:

> set.seed(2)
> dat = sample(letters, 100, TRUE)
> tab = table(dat)
> tab
dat
a b c d e f g h i j k l m n o p q r s t u v w x y z 
4 3 3 5 7 4 2 5 3 5 6 5 3 2 5 1 2 4 2 3 3 6 5 1 4 7 
> tab[tab == max(tab)]
dat
e z 
7 7