Предположим, у меня есть следующий data.frame:
set.seed(7)
data = data.frame(a = rnorm(100),
b = rnorm(100),
c = rnorm(100))
Затем я изменил его:
long = reshape2::melt(data, measure.vars = c("a", "b", "c"))
Затем я бы хотел проверить каждый a, b и cпеременная для UnitRoot присутствия. Поэтому я использую ur.df из пакета Urca. Вот мой вопрос:
Как я могу использовать dplyr , чтобы создать новую переменную индикатора, скажем, 1 или 0, чтобы остаться независимо от того, является ли unitroot или нет. Я думаю, что-то вроде этого:
output = long %>% group_by(variable) %>%
do(UR = summary(ur.df(.$value, type = c("trend"), selectlags = "BIC"))) %>%
summarise(variable, tau = UR@teststat[1],
tau_cri = UR@cval[1,3],
URT = if_else(UR@teststat[1] < UR@cval[1,3],
1, 0))
Но последний кусок кода просто генерирует новый data.frame (вывод) с каждой переменной группы, то есть "a, b и c" с индикаторомесли есть или нет единый корень. Но я хочу создать новую переменную в том же data.frame, я имею в виду long . Я хочу этого, потому что мне, возможно, придется разделить мой data.frame в соответствии с этим индикатором (может быть, у вас есть другая идея получить тот же результат другим способом, чем то, о чем я думаю. Это тоже приветствуется, но яБуду признателен, если вы знаете, как делать то, что я хочу).
PD: результат из моего кода выглядит так:
variable tau tau_cri URT
<fct> <dbl> <dbl> <dbl>
1 a -5.23 -3.15 1
2 b -7.83 -3.15 1
3 c -5.89 -3.15 1