R-将许多1D格式的时间序列转换为3D数组,每个时间序列都带有两个标签
我有一个一维csv,它包含许多时间序列的数据,每个时间序列都有两个标签 将文件读入R后,我应该使用什么关键功能将数据快速转换为3D矩阵 数据采用以下格式:R-将许多1D格式的时间序列转换为3D数组,每个时间序列都带有两个标签,r,R,我有一个一维csv,它包含许多时间序列的数据,每个时间序列都有两个标签 将文件读入R后,我应该使用什么关键功能将数据快速转换为3D矩阵 数据采用以下格式: Date, Price, Stock Ticker, Country 1/1/2012, 98, ABC.US, US 1/2/2012, 100, ABC.US, US . . . 1/1/2012, 36, XYZ.US, US 1/2/2012, 34, XYZ.US, US . . . . 1/1/2012, 78, MNO.LN,
Date, Price, Stock Ticker, Country
1/1/2012, 98, ABC.US, US
1/2/2012, 100, ABC.US, US
.
.
.
1/1/2012, 36, XYZ.US, US
1/2/2012, 34, XYZ.US, US
.
.
.
.
1/1/2012, 78, MNO.LN, UK
1/2/2012, 75, MNO.LN, UK
.
.
我想将此表转换为具有日期、股票代码和国家/地区维度的3D数组:
3DTable[Date,Ticker,Country]
我想我能回答你的问题 创建数据帧
x <- data.frame(Date=rep(c("1/1/2012", "1/2/2012"), 3),
Price=c(98, 100, 36, 34, 78, 75),
"Stock Ticker"=rep(c("ABC.US", "XYZ.US", "MNO.LN"), each=2),
Country=rep(c("US", "US", "UK"), each=2))
我想我能回答你的问题 创建数据帧
x <- data.frame(Date=rep(c("1/1/2012", "1/2/2012"), 3),
Price=c(98, 100, 36, 34, 78, 75),
"Stock Ticker"=rep(c("ABC.US", "XYZ.US", "MNO.LN"), each=2),
Country=rep(c("US", "US", "UK"), each=2))
试试这个:
library(plyr)
daply(x, c("Date", "Stock Ticker", "Country"), function(y) y$Price)
daply
的第一个参数是数据帧,第二个是要用作维度的变量(可能需要将空格更改为点,具体取决于读取数据的方式),第三个是从daraframe行计算数组值的函数。尝试以下操作:
library(plyr)
daply(x, c("Date", "Stock Ticker", "Country"), function(y) y$Price)
daply
的第一个参数是您的数据框,第二个参数是您希望用作维度的变量(可能需要将空格更改为点,具体取决于您读取数据的方式),第三个是从daraframe行计算数组值的函数。假设@sebastian-c正确地解释了您的问题,这是一个以R为底的一行代码,可以让您达到:
tapply(x$Price, x[, -2], c)
# , , Country = UK
#
# Stock.Ticker
# Date ABC.US MNO.LN XYZ.US
# 1/1/2012 NA 78 NA
# 1/2/2012 NA 75 NA
#
# , , Country = US
#
# Stock.Ticker
# Date ABC.US MNO.LN XYZ.US
# 1/1/2012 98 NA 36
# 1/2/2012 100 NA 34
假设@sebastian-c正确地解释了您的问题,这是R底的一行代码,可以让您达到目的:
tapply(x$Price, x[, -2], c)
# , , Country = UK
#
# Stock.Ticker
# Date ABC.US MNO.LN XYZ.US
# 1/1/2012 NA 78 NA
# 1/2/2012 NA 75 NA
#
# , , Country = US
#
# Stock.Ticker
# Date ABC.US MNO.LN XYZ.US
# 1/1/2012 98 NA 36
# 1/2/2012 100 NA 34
tapply(x$Price, x[, -2], c)
# , , Country = UK
#
# Stock.Ticker
# Date ABC.US MNO.LN XYZ.US
# 1/1/2012 NA 78 NA
# 1/2/2012 NA 75 NA
#
# , , Country = US
#
# Stock.Ticker
# Date ABC.US MNO.LN XYZ.US
# 1/1/2012 98 NA 36
# 1/2/2012 100 NA 34