我需要你就如何解决这个问题提出意见
我有一个来自大型数据集的小数据子集。
我的子集和原始数据集遵循以下格式:
这里写出:
Stock Date Price
Pfizer 18-Aug-2009 18.8
Yahoo 19-Aug-2012 27.1
Facebook 20-Aug-2014 77.14
Amazon 21-Aug-2014 683.66
Merck 22-Aug-2005 22.9
Ford 23-Aug-2003 20.1
假设我的子集是我专门选择的一个集合。
我想采用这个子集,让它命名(MoneyFA)。我想将MoneyFA中的价格设置为T0。让我们说前一年的最高价格是T-1,前一年的价格是t-2。而后一年的价格是T1,而后一年的价格是T2。
现在,我如何编程一个程序,该程序接受具有可变日期的子集,然后开始搜索T值的主数据集(有大量数据并将其命名为Moneypool)。让我们说窗口是10年前和T0后10年。 (请记住,某一公司的主要数据集中可能有一年的价格。我们需要选择该年度的最高价格)
我希望它能给我一个类似于此的表格或矩阵(如果主数据集中没有值,它可以保持为空或NA):
这里写出:
Stock T-10 T-9 T-8 T-7 T-6 T-5 T-4 T-3 T-2 T-1 T0 T+1 T+2 T+3 T+4 T+5 T+6 T+7 T+8 T+9 T+10
Pfizer 37.12 24.9 19.23 27.01 21.05 17.12 19.88 17.9 18.8 20.91 23.4 24.9
Yahoo 9.8 18.9 19.7 12.5 22.6 15.8 27.1
Facebook 35.86 49.62 63.38 77.14 90.9
Amazon 208.9 533.42 558.46 600.2 608.54 700.1 658.62 683.66 708.7 733.74 809.11
Merck 41.1 39.28 37.46 35.64 33.82 32 30.18 28.36 26.54 38.7 22.9 21.08 29.8
Ford 66.1 61.5 56.9 52.3 47.7 43.1 38.5 33.9 29.3 24.7 20.1 15.5 10.9 6.3 1.7 4.2 7.3 8.9 10.5 12.1 11.8
答案 0 :(得分:0)
以下是使用public class HomeActivity extends AppCompatActivity implements VerifiedInterface {
//rest of the code of HomeActivity
}
的示例。从data.table
中提取Year
,然后在10年内Date
计算最大Price
(Stock
和Year
) Years
。然后相对于year_zero
(year_zero
)表示年份,然后以宽格式显示结果T
:
cast
第一个library(data.table)
d <- structure(list(Stock = c("Pfizer", "Yahoo", "Facebook", "Amazon",
"Merck", "Ford"), Date = c("18-Aug-2009", "19-Aug-2012", "20-Aug-2014",
"21-Aug-2014", "22-Aug-2005", "23-Aug-2003"), Price = c(18.8,
27.1, 77.14, 683.66, 22.9, 20.1)), .Names = c("Stock", "Date",
"Price"), row.names = c(NA, -6L), class = "data.frame")
setDT(d)
year_zero <- 2010
# Extract Year from Date
d[, Year := as.integer(substr(Date, start = 8, 12))]
# Filter to include year_zero +/- 10 years and get max price per stock per year
d <- d[Year >= year_zero - 10 & Year <= year_zero + 10,
.(Max_Price = max(Price, na.rm = TRUE)), by = .(Stock, Year)]
# Add T as interval to year_zero (and convert to factor in order to get all
# values from -10 to 10
d[, "T" := factor(Year - year_zero, levels = seq(-10, 10), ordered = TRUE)]
# Cast to wide format (fill missing values with NA)
dcast(d, Stock~T, value.var = "Max_Price", drop = FALSE)
# Cast to wide format (fill missing values with "")
dcast(d, Stock~T, value.var = "Max_Price", drop = FALSE, fun.aggregate = paste0,
fill = "")
的输出是:
dcast