首页 > 解决方案 > 合并来自具有唯一名称的不同数据框的列

问题描述

我有以下三个data.frames

我正在尝试合并"ticker".Close每个“代码”对应于列表中名称的列tickers。它们也由它们各自的data.frames代码调用。所以我试图得到一个最终的数据框:

东风:

IFF.Close | LYB.Close | NEM.close
1234          5678        8888
4545          8789        8987

由于代码会发生变化,因此我正在尝试使其自动化一点。

列表:

  tickers <- c("IFF", "LYB", "NEM")

数据:

IFF <- structure(c(153.039993, 154.929993, 156.279999, 154.460007, 156.839996, 
155.929993, 154.559998, 156.589996, 157.220001, 156.929993, 156.839996, 
156.490005, 152.539993, 154.529999, 153.589996, 154.320007, 155.449997, 
154.139999, 154.559998, 155.740005, 153.759995, 156.869995, 155.830002, 
154.259995, 264500, 243900, 371300, 259900, 208000, 214200, 152.908661, 
154.076065, 152.117203, 155.19397, 154.165085, 152.611862), .indexCLASS = "Date", tclass = "Date", .indexTZ = "UTC", tzone = "UTC", src = "yahoo", updated = structure(1530969585.64543, class = c("POSIXct", 
"POSIXt")), class = c("xts", "zoo"), index = structure(c(1514851200, 
1514937600, 1515024000, 1515110400, 1515369600, 1515456000), tzone = "UTC", tclass = "Date"), .Dim = c(6L, 
6L), .Dimnames = list(NULL, c("IFF.Open", "IFF.High", "IFF.Low", 
"IFF.Close", "IFF.Volume", "IFF.Adjusted")))

和;

LYB <- structure(c(111.050003, 111.82, 112.800003, 113.25, 114.400002, 
114.330002, 112.260002, 112.419998, 113.440002, 114.459999, 114.400002, 
116.339996, 110.690002, 110.699997, 111.809998, 112.330002, 113.040001, 
114.209999, 112.230003, 112.260002, 112.800003, 114.370003, 114.110001, 
115.150002, 1127800, 1437300, 1631000, 1082000, 1283200, 1794000, 
110.254074, 110.283546, 110.814034, 112.356392, 112.100967, 113.122658
), .indexCLASS = "Date", tclass = "Date", .indexTZ = "UTC", tzone = "UTC", src = "yahoo", updated = structure(1530969586.76173, class = c("POSIXct", 
"POSIXt")), class = c("xts", "zoo"), index = structure(c(1514851200, 
1514937600, 1515024000, 1515110400, 1515369600, 1515456000), tzone = "UTC", tclass = "Date"), .Dim = c(6L, 
6L), .Dimnames = list(NULL, c("LYB.Open", "LYB.High", "LYB.Low", 
"LYB.Close", "LYB.Volume", "LYB.Adjusted")))

和;

NEM <- structure(c(37.869999, 38.209999, 37.75, 38.18, 38.349998, 38.150002, 
38.299999, 38.259998, 38.259998, 38.43, 38.52, 38.32, 37.82, 
37.490002, 37.369999, 38.02, 37.959999, 37.950001, 38.16, 37.84, 
38.259998, 38.400002, 38.360001, 38.110001, 5325800, 5143600, 
3876000, 2877300, 4719800, 3902600, 37.884403, 37.566715, 37.983677, 
38.122669, 38.082958, 37.834763), .indexCLASS = "Date", tclass = "Date", .indexTZ = "UTC", tzone = "UTC", src = "yahoo", updated = structure(1530969590.28438, class = c("POSIXct", 
"POSIXt")), class = c("xts", "zoo"), index = structure(c(1514851200, 
1514937600, 1515024000, 1515110400, 1515369600, 1515456000), tzone = "UTC", tclass = "Date"), .Dim = c(6L, 
6L), .Dimnames = list(NULL, c("NEM.Open", "NEM.High", "NEM.Low", 
"NEM.Close", "NEM.Volume", "NEM.Adjusted")))

编辑:这是我拥有的代码,可以让您到达我所在的位置:

library(rvest)
url <- "https://en.wikipedia.org/wiki/List_of_S%26P_500_companies"
SP500 <- url %>%
  html() %>%
  html_nodes(xpath='//*[@id="mw-content-text"]/div/table[1]') %>%
  html_table()
SP500 <- SP500[[1]]
Tix <- SP500$`Ticker symbol`
Tix


industries <- unique(SP500$`GICS Sub Industry`)
library(dplyr)
industries <- industries %>%
  data.frame() %>%
  arrange(industries)

myfirms <- SP500[SP500$`GICS Sub Industry` == "Asset Management & Custody Banks", ]

unique(SP500$`GICS Sector`)

sectors <- unique(SP500$`GICS Sector`)
library(dplyr)
sectors <- sectors %>%
  data.frame() %>%
  arrange(sectors)

myfirms <- SP500[SP500$`GICS Sector` == "Materials", ]
myTixsectors <- myfirms$`Ticker symbol`


library(quantmod)
getSymbols(myTixsectors, from = "2018-01-01", to = "2018-06-01")

该代码基本上取自维基百科的 SP500 公司列表,我按部门和行业对它们进行了子集化。我使用 quantmod 包然后下载每个公司股票价格调整的开盘价、收盘价、最高价、最低价。我现在要做的是data.frame与每个公司子集(按部门子集)的收盘价制作一个。

标签: rdataframe

解决方案


推荐阅读