首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R: TTR:按市值分类

R: TTR:按市值分类
EN

Stack Overflow用户
提问于 2016-02-24 11:39:34
回答 1查看 506关注 0票数 1

我试图按市值对股票符号进行排序--我尝试了下面的代码,但列表没有正确排序。是否有一种简单的方法来移除$并将M和B转换为数字?

代码语言:javascript
复制
library(TTR)
listings <- stockSymbols() 
listings <- listings[order(as.numeric(listings$MarketCap),decreasing=TRUE),]
head(listings,20)

我很感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-24 13:21:21

可能有提供转换功能的包,例如"$23.93M"239600000.00,但是这里有一种使用基本R函数的方法:

代码语言:javascript
复制
listings$MktCap <- as.numeric(
  sub("\\$(\\d+(\\.\\d+)?)[A-Z]?", "\\1", listings$MarketCap)) * 
  ifelse(gsub("[^A-Z]", "", listings$MarketCap) == "M", 1e6,
         ifelse(gsub("[^A-Z]", "", listings$MarketCap) == "B", 1e9, 1.0)) 

head(listings[order(listings$MktCap, decreasing = TRUE),], 5)
#     Symbol                    Name LastSale MarketCap IPOyear     Sector
#382    AAPL              Apple Inc.    94.69  $525.02B    1980 Technology
#1637  GOOGL           Alphabet Inc.   717.29  $493.72B      NA Technology
#1636   GOOG           Alphabet Inc.   695.85  $478.97B    2004 Technology
#2238   MSFT   Microsoft Corporation    51.18   $404.8B    1986 Technology
#6664    XOM Exxon Mobil Corporation    81.23  $338.16B      NA     Energy
#
#                                            Industry Exchange       MktCap
#382                           Computer Manufacturing   NASDAQ 525020000000
#1637 Computer Software: Programming, Data Processing   NASDAQ 493720000000
#1636 Computer Software: Programming, Data Processing   NASDAQ 478970000000
#2238         Computer Software: Prepackaged Software   NASDAQ 404800000000
#6664                        Integrated oil Companies     NYSE 338160000000

简而言之,

  • sub("\\$(\\d+(\\.\\d+)?)[A-Z]?", "\\1", listings$MarketCap)只提取MarketCap的十进制数部分,例如从$525.02B中提取525.02;结果将传递给as.numeric
  • 据我所知,gsub("[^A-Z]", "", listings$MarketCap)移除大写字母以外的所有内容,这些字母只应该是BM
  • 使用嵌套的ifelse语句,上述表达式的结果将将"B"映射到1e9,将"M"映射到1e6,将所有其他映射到1。

此时,MktCap应该是MarketCap的正确数字表示,排序非常简单。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35601162

复制
相关文章

相似问题

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