[英]How to create a loop for adding new columns in a df - R
我需要你的幫助。 我有一個包含日期和值的數據框,如下所示:
Id Date1 Date2 Value
1 01/01/18 01/03/18 1.000
2 01/05/18 01/07/18 500
3 01/03/18 01/06/18 17.000
4 01/12/18 01/01/19 670
5 01/10/18 01/12/18 9.600
我將需要創建一個for循環,以便為i =(0、60、90、180、270、360)向數據幀添加新列,因此->如果RifDate(是一個恆定日期)-Date1> i&RifDate -日期2
因此,我希望獲得六列包含0或Value的新列
根據您的“ RifDate”,您可能會得到不同的結果:
df <- as.data.frame(
read.table(text =
"Id Date1 Date2 Value
1 01/01/18 01/03/18 1.000
2 01/05/18 01/07/18 500
3 01/03/18 01/06/18 17.000
4 01/12/18 01/01/19 670
5 01/10/18 01/12/18 9.600",header=TRUE)
) %>%mutate_at(2:3, function(x) as.Date(as.character(x), "%m/%d/%y"))
RefDate <- as.Date("01/04/18", "%m/%d/%y")
ref <- c(0, 60, 90, 180, 270, 360)
dat <- NULL
for (i in 1:length(ref)) {
for (j in 1:nrow(df)) {
if ((RefDate - df$Date1[j] > ref[i]) & (RefDate - df$Date1[j] > RefDate - df$Date2[j])) {
dat[j] <- df$Value[j]
} else
dat[j] <- 0
}
df[,paste0("X", i)] <- dat
}
df
Id Date1 Date2 Value X1 X2 X3 X4 X5 X6
1 1 2018-01-01 2018-01-03 1.0 1 0 0 0 0 0
2 2 2018-01-05 2018-01-07 500.0 0 0 0 0 0 0
3 3 2018-01-03 2018-01-06 17.0 17 0 0 0 0 0
4 4 2018-01-12 2019-01-01 670.0 0 0 0 0 0 0
5 5 2018-01-10 2018-01-12 9.6 0 0 0 0 0 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.