【问题标题】:Create indicator for two highest observations?为两个最高观察值创建指标?
【发布时间】:2020-12-16 01:52:31
【问题描述】:

我正在使用以下数据框:

Month      Week   Y     Name   Color
January     2     1.2    Joe    Red
January     2     3.3    Eric   Red
January     2     4.5    Mike   Blue
January     2     1.7    Brian  Blue
January     2     2.9    Pete   Red
January     3     4.6    Joe    Red
January     3     5.1    Eric   Blue
January     3     2.1    Mike   Blue
January     3     6.9    Pete   Red
...

我想创建一个新列(“最高”),用于标识在给定周内具有两个最高 Y 值的个人(用 A 和 B 标识他们,这样以后在我的项目中创建线段会更容易) 谁也有“蓝色”的颜色。

Month      Week   Y     Name    Highest
January     2     1.2    Joe       -
January     2     3.3    Eric      B
January     2     4.5    Mike      A
January     2     1.7    Brian     -
January     2     2.9    Pete      -
January     3     4.6    Joe       -
January     3     5.1    Eric      B
January     3     2.1    Mike      A
January     3     6.9    Pete      -
...

此外,如您在上表中所见,我希望“最高”列在整个月内保持相同 - 该列应显示第 2 周所有观察值中两个 Y 值最高的个体给定月份。我假设这需要group_by(Month, Week) %>%

【问题讨论】:

  • 不清楚,周数实际上不是一年的周数,是吗?
  • @jay.sf 他们是本月的周数。我只有第 2-4 周,没有第 1 周。

标签: r dataframe


【解决方案1】:

您可以通过Yarrange 数据并将'A''B' 分配给前两个值。

library(dplyr)

df %>%
  arrange(Month, Week, desc(Y)) %>%
  group_by(Month, Week) %>%
  mutate(Highest = c('A', 'B', rep(NA, n()-2)))
  #If you want to have '-' instead of `NA`. 
  #mutate(Highest = c('A', 'B', rep('-', n()-2)))

【讨论】:

  • 怎么可能添加另一个条件,即:如何指示每组中两个最高的观察值也有蓝色?
  • 这不是一个简单的解决上述答案的方法。如果您将其作为一个新问题提出会更好。
  • 抱歉,我投了赞成票但忘记接受了。对不起!
猜你喜欢
  • 2020-04-02
  • 1970-01-01
  • 1970-01-01
  • 2015-11-29
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多