簡體   English   中英

如何創建循環以在df中添加新列-R

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM