Итак, у меня довольно плохой набор данных, который мне не разрешено менять. Я хотел бы взять столбец «Draw_CashFlow» и сделать только определенные значения в свои собственные столбцы. Кроме того, мне нужно сделать все переменные одним столбцом (периодом) (от широкого до Tidy, если хотите).
В наборе данных ниже у нас есть столбец (Draw_CashFlow), который начинается с рассматриваемой переменной, за которой следует список идентификаторов, а затем повторяется для следующей переменной. Некоторые переменные могут иметь записи NA.
structure(list(Draw_CashFlow = c("Principal", "R01",
"R02", "R03", "Workout Recovery Principal",
"Prepaid Principal", "R01", "R02", "R03",
"Interest", "R01", "R02"), `PERIOD 1` = c(NA,
834659.51, 85800.18, 27540.31, NA, NA, 366627.74, 0, 0, NA, 317521.73,
29175.1), `PERIOD 2` = c(NA, 834659.51, 85800.18, 27540.31, NA,
NA, 306125.98, 0, 0, NA, 302810.49, 28067.8), `PERIOD 3` = c(NA,
834659.51, 85800.18, 27540.31, NA, NA, 269970.12, 0, 0, NA, 298529.92,
27901.36), `PERIOD 4` = c(NA, 834659.51, 85800.18, 27540.31,
NA, NA, 307049.06, 0, 0, NA, 293821.89, 27724.4)), row.names = c(NA,
-12L), class = c("tbl_df", "tbl", "data.frame"))
Теперь это конечный список необходимых переменных (принципал, принципал восстановления после тренировки, предоплаченный принципал и проценты), поэтому я попытался создать цикл, в котором он мог бы увидеть, существует ли он, затем собрать, но это не правильно.
После того, как переменные установлены отдельно от Draw_CashFlow, я надеюсь, что это выглядит примерно так (первые четыре строки, игнорируйте сокращения переменных).
ID Period Principal Wrk_Reco_Principal Prepaid_Principal Interest
R01 1 834659.51 NA 366627.74 317521.73
R02 1 85800.18 NA 0.00 29175.10
R03 1 27540.31 NA 0.00 NA
R01 2 834659.51 NA 306125.98 302810.49
Примечания: Wrl_Reco_Principal равен NA, потому что в этом Draw_CashFlow нет идентификаторов для этой переменной. Имейте в виду, что это должно быть сделано для борьбы с любым количеством идентификаторов, но имена переменных в столбце Draw_CashFlow всегда будут одинаковыми.