微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

一个向量中特定对象的另一个向量中的第二个最大值

如何解决一个向量中特定对象的另一个向量中的第二个最大值

我有一个非常大的数据框架,其中包含投资者,公司和股票。每个公司都有多个投资者,我希望有一个第四个向量,该向量具有每个公司的投资者第二大股票的价值。 为了展示我使用的最大投资者:

df$bigInv <- aggregate(df$InvShare ~ df$Company,df,max)

这是我的数据框的一个示例: enter image description here

解决方法

可重复性数据

df <- data.frame(id = c(1,2,3,4,5,6,7,8),Investor.Name =  c("Shigeo Kageyama","Shigeo Kageyama","Arataka Reigen","Ritsu Kageyama","Tenga Onigawara"),Company = c("Body Improvement Club","Salt Middle School","Spirits Consultation ","Pepper Middle School","Tofu Spirits School","Psycho Helmet Cult","Chess Club","Lecture Club"),InvShare = c(
                           0.45,0.12,0.89,0.541,0.15,0.75,0.14,0.1))

df

# id   Investor.Name               Company InvShare
# 1  1 Shigeo Kageyama Body Improvement Club    0.450
# 2  2 Shigeo Kageyama    Salt Middle School    0.120
# 3  3  Arataka Reigen Spirits Consultation     0.890
# 4  4  Arataka Reigen  Pepper Middle School    0.541
# 5  5  Ritsu Kageyama   Tofu Spirits School    0.150
# 6  6  Ritsu Kageyama    Psycho Helmet Cult    0.750
# 7  7  Ritsu Kageyama            Chess Club    0.140
# 8  8 Tenga Onigawara          Lecture Club    0.100

以下代码将为您提供每个公司中第二大投资者的姓名。

#The second of the list of affiliation
second = function(x) {
  if (length(x) == 1)
    return(x)
  return(sort(x,decreasing = TRUE)[2])}

aggregate(x = list( InvShare =  df$InvShare),by= list(second_member =df$Investor.Name),FUN=second)

# second_member InvShare
# 1  Arataka Reigen    0.541
# 2  Ritsu Kageyama    0.150
# 3 Shigeo Kageyama    0.120
# 4 Tenga Onigawara    0.100

这就是您要搜索的内容吗

[已编辑]

我刚刚意识到您想要在data.frame上的第四列。以下行将完成此操作:

df$second  <- ave(x = df$InvShare,by = df$Investor.Name,FUN = second)

df

# id   Investor.Name               Company InvShare second
# 1  1 Shigeo Kageyama Body Improvement Club    0.450  0.120
# 2  2 Shigeo Kageyama    Salt Middle School    0.120  0.120
# 3  3  Arataka Reigen Spirits Consultation     0.890  0.541
# 4  4  Arataka Reigen  Pepper Middle School    0.541  0.541
# 5  5  Ritsu Kageyama   Tofu Spirits School    0.150  0.150
# 6  6  Ritsu Kageyama    Psycho Helmet Cult    0.750  0.150
# 7  7  Ritsu Kageyama            Chess Club    0.140  0.150
# 8  8 Tenga Onigawara          Lecture Club    0.100  0.100

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。