我有一个非常大的数据与投资者,公司和股票。每家公司都有多个投资者,我想从每个公司的投资者那里得到第四个向量,其中包含第二大股票的价值。因为我向最大的投资者展示了:
df$bigInv <- aggregate(df$InvShare ~ df$Company, df, max)这是我的数据框架的一个例子:在这里输入图像描述
发布于 2020-11-11 17:58:39
重现性数据
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下面的代码将给你每一家公司第二大投资者的名字。
#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.100https://stackoverflow.com/questions/64790853
复制相似问题