Я создаю структуру финансового отчета в R. Чего мне не хватает, так это последней части, в которую необходимо вставить фрейм данных с тем, что я называю «скользящим балансом».
Прежде всего, я бы хотел решить эту проблему с помощью базы R, избегая добавления еще одного пакета R.Если возможно, при вычислении следует использовать векторизованное вычисление вместо цикла.
Вопрос: Как вставить результат в ячейку, используя ячейку сверху и слева для ввода для вычислениярезультат.
Вот мой R-скрипт:
############
# Create df1
############
'date' <- '2018-10-01'
'product' <- 0
'bought' <- 0
'sold' <- 0
'profit.loss' <- 0
'comission' <- 0
'result' <- 0
'balance' <- 0
df1 <- data.frame(
date,
product,
bought,
sold,
profit.loss,
comission,
result,
balance
, stringsAsFactors=FALSE)
# Inject initial deposit
df1[1,8] <- 1000
##########################
# Create df2 (copying df1)
##########################
df2 <- df1
# Clean
df2 <- df2[-c(1), ] # Removing row 1.
df2[nrow(df2)+3,] <- NA # Create 3 rows.
df2[is.na(df2)] <- 0 # Change NA to zero.
# Populate the dataframe
df2$date <- c('2018-01-01', '2018-01-02', '2018-01-03')
df2$product <- c('prod-1', 'prod-2', 'prod-3')
df2$bought <- c(100, 200, 300)
df2$sold <- c(210, 160, 300)
df2$comission <- c(10, 10, 10)
# Merge both dataframes
df3 <- rbind(df1, df2)
#######
# Calcs
#######
df3$profit.loss <- df3$sold - df3$bought # calc profit.loss.
df3$result <- df3$profit.loss - df3$comission # calc result.
# [Xxx]# Balance <- Note! This is the specific calc connected to my question.
enter code here
Результат после запуска R-скрипта:
date product bought sold profit.loss comission result balance
1 2018-10-01 0 0 0 0 0 0 1000
2 2018-01-01 prod-1 100 210 110 10 100 0
3 2018-01-02 prod-2 200 160 -40 10 -50 0
4 2018-01-03 prod-3 300 300 0 10 -10 0
Вот как вычисляется «скользящий баланс»должен вести себя:
[Result] [Balance]
row-1: [No value] [initial capital: 1000]
row-2: [100] [900 / Take value of balance, one row above, subscract left result]
row-3: [-50] [850 / Take value of balance, one row above, subscract left result]
row-4: [follows the same principal as row-2 and row-3]