Создание переменной с функцией в R - PullRequest
0 голосов
/ 04 апреля 2019

Я хочу регрессировать следующее уравнение: x5 = B0 + B1 (x1-x2) + B2 * max [0, (x2 - x1)] + e

У меня возникли проблемы с генерацией переменной max [0, (x0 - x1)]. Переменная должна быть либо 0, если (x2-x1) <0, либо разница между (x2-x1), если> = 0.

 d1 <- structure(list(Date=c("2012-01-01", "2012-06-01",
                 "2013-01-01", "2013-06-01", "2014-01-01", "2014-06-01"),
                 x1=c(10, 12, 17L, 29L, 27L, 10L), 
                 x2=c(30L, 19L, 22L, 20L, 11L,24L), 
                 x3=c(28, 23L, 22L, 27L, 21L, 26L),
                 x4=c(30L, 28L, 23L,24L, 10L, 17L), 
                 x5=c(14, 17, 19, 16L, 30L, 26L)),
                 row.names=c(NA, 6L), class="data.frame")
 rownames(d1) <- d1[, "Date"]   
 d1 <- d1[,-1]     

Спасибо

1 Ответ

3 голосов
/ 04 апреля 2019

Мы можем использовать pmax

pmax(0, d1$x2 - d1$x1)
#[1] 20  7  5  0  0 14

Возвращает максимум между x2 - x1 или 0.

ifelse подход будет

ifelse(d1$x2 - d1$x1 < 0, 0, d1$x2 - d1$x1)
#[1] 20  7  5  0  0 14
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...