Обратитесь к относительным строкам в R - PullRequest
1 голос
/ 28 июня 2010

Я знаю, что этот ответ должен быть там, но я не могу понять, как сформулировать вопрос.

Я хотел бы рассчитать разницу между значениями в моем data.frame.

из этого:

f <- data.frame(year=c(2004, 2005, 2006, 2007), value=c(8565, 8745, 8985, 8412))

  year value
1 2004  8565
2 2005  8745
3 2006  8985
4 2007  8412

к этому:

  year value diff
1 2004  8565   NA
2 2005  8745  180
3 2006  8985  240
4 2007  8412 -573

(т. Е. Значение текущего года минус значение предыдущего года)

Но я не знаю, как получить результат в одной строке, созданный из другой строки. Любая помощь?

Спасибо, Том

Ответы [ 3 ]

11 голосов
/ 28 июня 2010

Есть много разных способов сделать это, но вот один:

f[, "diff"] <- c(NA, diff(f$value))

В более общем смысле, если вы хотите сослаться на относительные строки, вы можете использовать lag() или сделать это непосредственно с индексами:

f[-1,"diff"] <- f[-1, "value"] - f[-nrow(f), "value"]
1 голос
/ 28 июня 2010

Если столбец year не отсортирован, вы можете использовать match:

f$diff <- f$value - f$value[match(f$year-1, f$year)]
1 голос
/ 28 июня 2010

Используйте функцию diff

f <- cbind(f, c(NA, diff(f[,2])))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...