Я достаточно исследовал, пока не спрошу об этом здесь, но не могли бы вы помочь мне с некоторыми идеями по этому вопросу?
Моя таблица данных (df) выглядит так:
client id value repmonth
123 100 2012-01-31
123 200 2012-02-31
123 300 2012-05-31
Поэтому у меня 2 пропущенных месяца. И я хочу, чтобы моя таблица данных выглядела так:
client id value repmonth
123 100 2012-01-31
123 200 2012-02-31
123 200 2012-03-31
123 200 2012-04-31
123 300 2012-05-31
Код должен заполнить пропущенное повторение и заполнить строки последним значением, в данном случае 200 и пришедшим идентификатором клиента.
Я пробовал следующее:
zoo library
tidyr library
dlpyr library
posixct
Что касается кодов: ... множество сбоев
library(tidyr)
df %>%
mutate (repmonth = as.Date(repmonth)) %>%
complete(repmonth = seq.Date(min(repmonth), max(repmonth),by ="month"))
или
library(dplyr)
df$reportingDate.end.month <- as.POSIXct(df$datetime, tz = "GMT")
df <- tbl_df(df)
list_df <- list(df, df) # fake list of data.frames
seq_df <- data_frame(datetime = seq.POSIXt(as.POSIXct("2012-01-31"),
as.POSIXct("2018-12-31"),
by="month"))
lapply(list_df, function(x){full_join(total_loan_portfolios_3$reportingDate.end.month, seq_df, by=reportingDate.end.month)})
total_loan_portfolios_3$reportingmonth_notmissing <- full_join(seq_df,total_loan_portfolios_3$reportingDate.end.month)
или
library(dplyr)
ts <- seq.POSIXt(as.POSIXct("2012-01-01",'%d/%m/%Y'), as.POSIXct("2018/12/01",'%d/%m/%Y'), by="month")
ts <- seq.POSIXt(as.POSIXlt("2012-01-01"), as.POSIXlt("2018-12-01"), by="month")
ts <- format.POSIXct(ts,'%d/%m/%Y')
df <- data.frame(timestamp=ts)
total_loan_portfolios_3 <- full_join(df,total_loan_portfolios_3$Reporting_date)
Наконец, у меня много ошибок, таких как
формат не дата
или
Ошибка в seq.int (r1 $ mon, 12 * (to0 $ year - r1 $ year) + to0 $ mon, by):
'from' должно быть конечным числом
и другие.