我有数据框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"
有人可以解释为什么会这样吗?
答案 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