Создать новую переменную с задержкой по времени в R - PullRequest
3 голосов
/ 01 августа 2010

Я создаю объект временного ряда с новыми переменными, используя функцию transform () в R, и не могу найти подходящую функцию для вычисления разницы в переменной C между сегодняшним днем ​​и вчерашним днем.

Вот чтоУ меня так далеко:

                 O       H       L       C  Typical Range 
2010-07-23 1092.17 1103.73 1087.88 1102.66 1098.090 15.85 
2010-07-26 1102.89 1115.01 1101.30 1115.01 1110.440 13.71  
2010-07-27 1117.36 1120.95 1109.78 1113.84 1114.857 11.17  
2010-07-28 1112.84 1114.66 1103.11 1106.13 1107.967 11.55  
2010-07-29 1108.07 1115.90 1092.82 1101.53 1103.417 23.08  
2010-07-30 1098.44 1106.44 1088.01 1101.60 1098.683 18.43

Следующая строка будет добавлена ​​со следующей функцией:

SPX <- transform(SPX, Return = (C - C(yesterday) ) / C(yesterday)))

Очевидно, C (вчера) неверно.Я пробовал lag (), diff () и не нашел правильную комбинацию.

Бонусный вопрос: как вы можете заставить переменную Typical показываться только сотне?

1 Ответ

3 голосов
/ 01 августа 2010

Правильная функция - diff, если вы пытаетесь вычислить разницу C между сегодняшним днем ​​и вчерашним днем.

> SPX$Return <- diff(SPX$C)
> SPX
                 O       H       L       C  Typical Range Return
2010-07-23 1092.17 1103.73 1087.88 1102.66 1098.090 15.85     NA
2010-07-26 1102.89 1115.01 1101.30 1115.01 1110.440 13.71  12.35
2010-07-27 1117.36 1120.95 1109.78 1113.84 1114.857 11.17  -1.17
2010-07-28 1112.84 1114.66 1103.11 1106.13 1107.967 11.55  -7.71
2010-07-29 1108.07 1115.90 1092.82 1101.53 1103.417 23.08  -4.60
2010-07-30 1098.44 1106.44 1088.01 1101.60 1098.683 18.43   0.07

Но похоже, что вместо этого вы хотите рассчитать скорость изменения, которую вы можетеделать с функцией ROC от TTR.

> SPX$Return <- ROC(SPX$C)
> SPX
                 O       H       L       C  Typical Range        Return
2010-07-23 1092.17 1103.73 1087.88 1102.66 1098.090 15.85            NA
2010-07-26 1102.89 1115.01 1101.30 1115.01 1110.440 13.71  1.113793e-02
2010-07-27 1117.36 1120.95 1109.78 1113.84 1114.857 11.17 -1.049869e-03
2010-07-28 1112.84 1114.66 1103.11 1106.13 1107.967 11.55 -6.946068e-03
2010-07-29 1108.07 1115.90 1092.82 1101.53 1103.417 23.08 -4.167314e-03
2010-07-30 1098.44 1106.44 1088.01 1101.60 1098.683 18.43  6.354596e-05
...