Добавление нового столбца с функцией diff (), когда в R меньше одной строки
2687 просмотра
2 ответа
Если у меня есть пример фрейма данных, например mtcars, и я хочу найти разницу между mtcars $ qsec для всех строк, я могу сделать diff (mtcars $ qsec). Но есть ли простой способ сделать diff (mtcars $ qsec) новым столбцом в исходном фрейме данных mtcars? Я нахожу это трудным, потому что в diff меньше строки (mtcars $ qsec), чем в остальных mtcars.
> head(mtcars,3)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
Автор: lg929
Источник
Размещён: 12.11.2019 09:41
Ответы (2)
5 плюса
Вот два подхода. Оба положить NA
в первый ряд diff_qsec
и положить diff(qsec)
в остальные ряды:
library(dplyr)
mtcars %>% mutate(diff_qsec = qsec - lag(qsec)) # dplyr has its own version of lag
transform(mtcars, diff_qsec = c(NA, diff(qsec)))
Также, по общему вопросу заполнения смотрите: Как я могу дополнить вектор с NA спереди?
Автор: G. Grothendieck Размещён: 15.09.2016 03:001 плюс
Вы можете использовать базовую функцию в () следующим образом:
mtcars <- within(mtcars, difference <- c(NA,diff(qsec)))
Это создает столбец с именем «разность» с первым элементом NA, а остальные вычисляются как diff (qsec).
Вы можете создать больше столбцов одновременно, обернув команды в {}, такие как:
mtcars <- within(mtcars, {difference <- c(NA,diff(qsec))
multiple <- qsec*2})
Обратите внимание, что вы должны использовать <- для назначения, а не =.
Автор: greghk Размещён: 15.09.2016 03:19Вопросы из категории :
- r Как получить доступ к последнему значению в векторе?
- r Пакеты оптимизации для R
- r Есть ли у R такие операторские операции, как Perl qw ()?
- r Библиотека / инструмент для рисования тройных / треугольных графиков
- r Участки без заголовков / надписей в R
- r Расчет скользящей средней
- r Режим Emacs ESS - вкладка для области комментариев
- r Преобразование данных из многих строк во многие столбцы
- r Проверить, содержит ли вектор данный элемент
- r Поиск всех позиций для нескольких элементов в векторе
- diff C # сравнить алгоритмы
- diff Графические программы DIFF для Linux
- diff Алгоритм текстового различия
- diff Сравните две базы данных MySQL
- diff Как просмотреть вывод 'git diff' с помощью моего предпочтительного инструмента сравнения / средства просмотра?
- diff как я могу различить два раздела одного и того же файла?
- diff Есть ли безопасный способ запустить diff на двух сжатых файлах zip?
- diff Могу ли я заставить git распознавать файл UTF-16 как текст?
- diff Дифференциальный алгоритм?
- diff Могу ли я использовать git diff для необработанных файлов?