我已经尝试过使用 R 一点,目前我面临以下问题:
我有一张桌子data
其属性中存储了一些数值foo
。现在,如果我想从中获取比例表,我可以使用以下命令:
prop.table(table(data$foo))
这对我有用并产生以下输出(这只是其中的一部分):
[1] 0.005271318 0.005271318 0.003875969 0.004031008 0.005581395 0.005736434 0.004031008 0.005891473 0.006046512
我现在想做的是找出哪个比例最高,我是这样做的:
proportions <- prop.table(table(data$foo))
max(proportions)
我的问题是下一步:找出(以编程方式)我的值data$foo
是我的输出的对应值max(proportions)
.
所以如果我有这个价值0.05
作为我的最大值(比例),我想找到出现的所有值0.05%
我的数据集中的机会(也可能有多个值,因为我的sum(proportions==mymax)
产生输出2
).
我尝试过prop.table(data$foo==mymax)
where mymax <- max(proportions)
,(当然)这并没有按照我希望的方式进行。它只是生成一个布尔值列表。
我怎么可能这么做呢?
我创建了一些随机数据作为示例:
> dput(foo)
c(33L, 41L, 27L, 36L, 46L, 35L, 24L, 45L, 46L, 31L, 43L, 25L,
44L, 48L, 24L, 35L, 22L, 25L, 23L, 21L, 25L, 43L, 40L, 33L, 28L,
24L, 21L, 35L, 24L, 46L, 44L, 29L, 36L, 32L, 40L, 32L, 26L, 34L,
37L, 49L, 46L, 36L, 46L, 38L, 41L, 36L, 32L, 50L, 29L, 23L, 37L,
50L, 25L, 36L, 41L, 47L, 35L, 41L, 46L, 22L, 34L, 39L, 31L, 32L,
46L, 40L, 33L, 29L, 48L, 23L, 47L, 40L, 37L, 38L, 21L, 21L, 21L,
28L, 31L, 26L, 30L, 25L, 32L, 49L, 31L, 47L, 20L, 31L, 33L, 34L,
38L, 30L, 41L, 41L, 50L, 32L, 41L, 49L, 21L, 49L, 26L, 21L, 29L,
20L, 47L, 24L, 26L, 42L, 50L, 25L, 36L, 42L, 28L, 28L, 30L, 28L,
43L, 21L, 33L, 25L, 26L, 50L, 25L, 39L, 38L, 36L, 44L, 50L, 24L,
45L, 39L, 39L, 35L, 25L, 37L, 36L, 38L, 41L, 24L, 42L, 34L, 29L,
35L, 20L, 40L, 41L, 20L, 49L, 45L, 20L)
> prop.table(table(foo))
foo
20 21 22 23 24 25 26 27 28 29
0.033333333 0.053333333 0.013333333 0.020000000 0.046666667 0.060000000 0.033333333 0.006666667 0.033333333 0.033333333
30 31 32 33 34 35 36 37 38 39
0.020000000 0.033333333 0.040000000 0.033333333 0.026666667 0.040000000 0.053333333 0.026666667 0.033333333 0.026666667
40 41 42 43 44 45 46 47 48 49
0.033333333 0.060000000 0.020000000 0.020000000 0.020000000 0.020000000 0.046666667 0.026666667 0.013333333 0.033333333
50
0.040000000
> myprop <- prop.table(table(foo))
> max(myprop)
[1] 0.06
> sum(myprop)
[1] 1
现在我知道,我的数据中出现的最高比例是0.06
并且只发生一次,对吗?我想知道的是:那有什么价值?我能做的是:
> myprop==max(myprop)
foo
20 21 22 23 24 **25** 26 27 28 29 30 31 32 33 34 35 36 37 38 39
FALSE FALSE FALSE FALSE FALSE **TRUE** FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
40 41 42 43 44 45 46 47 48 49 50
FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
所以我寻找的值是 25,但是除了手动搜索这个表之外,还必须有另一种方法。我就是搞不明白。