提问人:Matias Ochoa 提问时间:2/9/2023 最后编辑:user438383Matias Ochoa 更新时间:2/10/2023 访问量:74
在数据框行中循环以创建另一个数据框
Loop in data frames rows to create another data frame
问:
我有以下数据框:
Loans <- data.frame(
ID = c("215781","832567","721536"),
From = c("01-01-2023","04-15-2022","09-23-2021"),
End = c("05-02-2023","10-15-2023","12-23-2021"),
Type = c("Monthly","Quarterly","Monthly"))
我需要创建另一个数据框,该数据框对于每个贷款的每个周期内都有一行带有 ID 和日期,我所做的这个循环是不正确的,但可以了解我想做什么。如果您删除循环部分,它适用于 1 行
library(bizdays)
Base <- data.frame("TM",today())
colnames(Base) <- c("TM","InterestDates")
for (i in Loans[i,]){
df <- as.data.frame(seq.Date(Loans$From,Loans$Until,by="month"))
colnames(df) <- "InterestDates"
df$TM <- Loans$TM
Base <- rbind(Base,df)
}
像这样的东西将是预期的输出
ID | InterestDates
250414 | 2022-05-16
250414 | 2022-06-16
250414 | 2022-07-18
250414 | 2022-08-16
答:
1赞
king_of_limes
2/9/2023
#1
所以我猜你会想要这样的东西:
library(bizdays)
Loans <- data.frame(
ID = c("215781","832567","721536"),
From = c("01-01-2023","04-15-2022","09-23-2021"),
End = c("05-02-2023","10-15-2023","12-23-2021"),
Type = c("Monthly","Quarterly","Monthly"))
Base <- data.frame("ID" = character(),"InterestDates" = character())
Loans$From <- as.Date(Loans$From,format = "%m-%d-%y")
Loans$End <- as.Date(Loans$End,format = "%m-%d-%y")
for (i in 1:nrow(Loans)){
if(Loans$Type[i] == "Monthly"){
seq_dates <- seq.Date(Loans$From[i],Loans$End[i],by="month")
}else if(Loans$Type[i] == "Quarterly"){
seq_dates <- seq.Date(Loans$From[i],Loans$End[i],by="quarter")
}
df <- data.frame("ID" = rep(Loans$ID[i],length(seq_dates)),"InterestDates" = seq_dates)
Base <- rbind(Base,df)
}
原始代码中存在几个问题。
Base <- data.frame("TM",today())
使 DataFrame 已经包含一个条目,而不是空 DataFrame- 数据帧的列和不是命令所需的格式
From
End
Loans
date
seq.Date
- 贷款没有列,但我从你的输出中猜测,你无论如何都想要这个列
TM
ID
Loans[i,]
不起作用,因为不存在 - 您不能通过 定义。请查看循环的工作原理i
i
i
R
- 循环索引从不在循环中使用。如果需要数据帧列的第 i 个条目,请通过以下方式访问它
Loans$From[i]
我也不太确定:您是否想要原始数据帧的每个条目?还是依赖于数据帧的列?by = "month"
Type
Loans
评论
0赞
Matias Ochoa
2/10/2023
嗨,KoL,首先,非常感谢您的回答。是的,可悲的是,我对 Loops 的工作原理一无所知,而且我根本不擅长在堆栈中编写问题。关于你的最后一点,是的,每个条目都应该依赖于类型列,但我试图避免使问题变得更大和更复杂。亲切问候!
1赞
king_of_limes
2/10/2023
别担心,我们都是来学习的。编辑了代码,以包含对类型列的依赖关系的 if-else。有更短的方法可以做到这一点,但如果你没有太多不同的条目,这应该可以解决问题。如果有任何不清楚的地方,请随时询问。
下一个:完成序列列名称并填充 R
评论