R 如何使用FUN=diff进行聚合
我有以下称为“tbl”的数据帧R 如何使用FUN=diff进行聚合,r,R,我有以下称为“tbl”的数据帧 a 04/01/2016 9 b 04/01/2016 14 a 04/04/2016 11 b 04/04/2016 15 a 04/05/2016 14 b 04/05/2016 20 其中列分别称为资产类型、日期、和累计损益 我需要的是每日损益表的输出,而不是累计损益表,即 <code> a 04/01/2016 0 b 04/01/2016 0 a 04/04/2016 2 b 04/04/2016 1 a 04/05/
a 04/01/2016 9
b 04/01/2016 14
a 04/04/2016 11
b 04/04/2016 15
a 04/05/2016 14
b 04/05/2016 20
其中列分别称为资产类型
、日期
、和累计损益
我需要的是每日损益表的输出,而不是累计损益表,即
<code>
a 04/01/2016 0
b 04/01/2016 0
a 04/04/2016 2
b 04/04/2016 1
a 04/05/2016 3
b 04/05/2016 5
我正在尝试这种代码,但它不起作用
tbl2 <- aggregate(Cumulative_P&L~Asset_Type+Date,tbl,FUN=function(x) diff(x,1))
tbl2 <- with(tbl,aggregate(Cumulative_P&L~Asset_Type+Date,FUN=function(x) diff(x,1))) </code>
tbl2使用lag
和abs
而不是diff
的dplyr解决方案,尽管您得到的是NA值而不是0
Asset_Type <- rep(c("a", "b"), 3)
Date <- rep("4/01/2016", "4/04/2016", "4/05/2016", each = 2)
Cumulative_PL <- c(9, 14, 11, 15, 14, 20)
table <- data.frame(Asset_Type,
Date,
Cumulative_PL)
table %>%
group_by(Asset_Type) %>%
mutate(Daily_PL = abs(Cumulative_PL - lag(Cumulative_PL)))
要将NA值转换为0,请执行以下操作:
table_df <- as.data.frame(table)
table_df[is.na(table_df)] <- 0
表
table_df <- as.data.frame(table)
table_df[is.na(table_df)] <- 0