Условно заполнить R столбец данных, смещение от контрольного столбца - PullRequest
0 голосов
/ 30 января 2012

У меня есть фрейм данных с именем Prices_df, к которому я добавляю дополнительный столбец и условно заполняю его на основе содержимого другого столбца в той же самой df 1

prices_df$itd_1 <- c(NA)
prices_df$itd_1 <- with( prices_df , ifelse(V2.1==1 , 1, NA) )

, что дает 1 впоследний столбец, таким образом,

2005-11-16,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,1
2005-11-17,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA
2005-11-18,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA

Однако, что я также хотел бы сделать, это сместить эту условную заливку так, чтобы вывод был, например, на 1 в столбце на две строки позже, чем опорный столбец, иливозможно, x строк раньше или позже, например,

2005-11-16,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA,NA
2005-11-17,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA
2005-11-18,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1

Как я могу настроить данный код для достижения этого смещения условного заполнения?

1 Ответ

1 голос
/ 30 января 2012

Лучше всего:

  1. Создать объект временного ряда (я предпочитаю зоопарк)
  2. Создать дополнительный столбец с задержкой (или смещением, как вы ее называете)
  3. Объедините все вместе

    prices_df <- read.table(text="2005-11-16,NA,NA,NA,NA,1,NA,NA,NA,NA,NA,NA,NA
    2005-11-17,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA
    2005-11-18,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA", header=F, sep=",")
    
    library(zoo)
    prices_df.zoo <-zoo(prices_df[,-1],as.Date(prices_df[,1]))
    itd_1 <- lag(with( prices_df.zoo , ifelse(V6==1 , 1, NA) ),-2) #lag = -2
    prices_df.zoo <-merge(prices_df.zoo, itd_1)
    
    > prices_df.zoo
               V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 itd_1
    2005-11-16 NA NA NA NA  1 NA NA NA  NA  NA  NA  NA    NA
    2005-11-17 NA NA NA NA NA NA NA NA  NA  NA  NA  NA    NA
    2005-11-18 NA NA NA NA NA NA NA NA  NA  NA  NA  NA     1
    
...