首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >另一个向量中特定对象向量中的第二大值

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

Stack Overflow用户
提问于 2020-11-11 17:01:23
回答 1查看 105关注 0票数 1

我有一个非常大的数据与投资者,公司和股票。每家公司都有多个投资者,我想从每个公司的投资者那里得到第四个向量,其中包含第二大股票的价值。因为我向最大的投资者展示了:

代码语言:javascript
复制
df$bigInv <- aggregate(df$InvShare ~ df$Company, df, max)

这是我的数据框架的一个例子:在这里输入图像描述

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-11 17:58:39

重现性数据

代码语言:javascript
复制
df <- data.frame(id = c(1, 2, 3, 4, 5, 6, 7, 8),
                 Investor.Name =  c("Shigeo Kageyama", 
                                    "Shigeo Kageyama", 
                                    "Arataka Reigen",   
                                    "Arataka Reigen",  
                                    "Ritsu Kageyama",   
                                    "Ritsu Kageyama",
                                    "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

下面的代码将给你每一家公司第二大投资者的名字。

代码语言:javascript
复制
#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上开第四篇专栏。以下几行就可以做到这一点:

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64790853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档