计算运行余额列

时间:2017-06-09 13:30:00

标签: r data.table

我需要R和下面的数据方面的帮助。对于每个日期,都有一个值(A列),我需要计算Balance列,它总计减去A列中每行的值.406是A列的总和。

我目前在data.table中有这些数据。

Dates        A        Balance
                      406.00
30/12/2016   100.00   306.00 
31/03/2017   101.00   205.00 
30/06/2017   102.00   103.00 
29/09/2017   103.00   -   

由于

4 个答案:

答案 0 :(得分:1)

您可以使用循环并手动执行计算,不包括最后一行。

data <- data.frame(A = c(NA, 100, 101, 102, 103), Balance = c(406, NA, NA, NA, NA))
for (i in 1:(nrow(data) - 1)) {
    data$Balance[i + 1] <- data$Balance[i] - data$A[i + 1]
}

答案 1 :(得分:1)

data$Balance <- sum(data$A)-data$A

您可以通过将所有A相加然后用矢量A减去来创建平衡columb。

答案 2 :(得分:0)

这应该可以获得所需的结果

# Create dataframe
df <- data.frame(Dates = c("30/12/2016","31/03/2017","30/06/2017","29/09/2017"),
                 A = c(100.00, 101.00, 102.00, 103.00))

# Create empty Balance column
df$Balance <- NA

# Insert total balance to top of dataframe
df <- rbind(c(NA,0,sum(df$A)), df)

# Get the running balance
df$Balance <- sum(df$A) - cumsum(df$A)

答案 3 :(得分:0)

我想指出函数cumsum是为此做的。反转数据帧后......:

df <- df[seq( nrow(df), 1 ),]
df
       Dates     A Balance
       <chr> <dbl>   <chr>
1 29/09/2017   103       -
2 30/06/2017   102  103.00
3 31/03/2017   101  205.00
4 30/12/2016   100  306.00
5       <NA>    NA  406.00

cumsum(df$A)
[1] 103 205 306 406  NA