Я пытаюсь вычислить изменение предыдущего дня для каждой группы.
Допустим, у меня есть следующие наблюдения:
cat var1 var2 date
1 male 172 68 2011-01-01
2 female 61 141 2011-01-02
3 female 211 208 2011-01-03
4 other 10 95 2011-01-04
5 female 149 49 2011-01-05
Я хочу добавить новый столбец с 0 или1, если текущий var1
больше или нет предыдущего результата с использованием оператора ifelse
.
cat var1 var2 date NEWCOL
1 male 172 68 2011-01-01 -
2 female 61 141 2011-01-02 -
3 female 211 208 2011-01-03 1 # since its greater than 61
4 female 10 95 2011-01-04 0 # since its less than 211
5 female 149 49 2011-01-05 1 # since its greater than 10
Данные:
tt <- seq(from = as.Date('2011-01-01', format = "%Y-%m-%d"), to = as.Date('2011-07-31', format = "%Y-%m-%d"), by = 1)
df <- data.frame(
cat = sample(c('male', 'female', 'other'), length(tt), replace=TRUE),
var1 = sample(length(tt), replace = TRUE),
var2 = sample(length(tt), replace = TRUE),
date = as.Date(tt)
)
РЕДАКТИРОВАТЬ: Это не работает:
df %>%
mutate(var1 = as.numeric(var1)) %>%
group_by(cat, date) %>%
mutate(chng = first(var1) - last(var))