R идентифицирует первое значение во фрейме данных и создает новую переменную, добавляя / вычитая это из всех значений во фрейме данных в новом столбце
Я знаю, что на этот вопрос, возможно, уже был дан ответ в другом месте, и извиняюсь за его повторение, если так, но я пока не нашел подходящего ответа.
У меня есть 17 предметов каждый с двумя переменными, как показано ниже:
Time (s) OD
130 41.48
130.5 41.41
131 39.6
131.5 39.18
132 39.41
132.5 37.91
133 37.95
133.5 37.15
134 35.5
134.5 36.01
135 35.01
Я хотел бы, чтобы R идентифицировал первое значение в столбце 2 (OD) моего фрейма данных и создал новый столбец (OD_adjusted), добавляя или вычитая (в зависимости от того, является ли первое значение +ive или -ive) из всех значений в столбце 2, поэтому это будет выглядеть так:
Time (s) OD OD_adjusted
130 41.48 0
130.5 41.41 -0.07
131 39.6 -1.88
131.5 39.18 -2.3
132 39.41 -2.07
132.5 37.91 -3.57
133 37.95 -3.53
133.5 37.15 -4.33
134 35.5 -5.98
134.5 36.01 -5.47
135 35.01 -6.47
Первое значение в столбце 2 - 41,48, поэтому я хочу вычесть это значение из всех точек данных в столбце 2, чтобы создать новый третий столбец (OD_adjusted).
я могу использовать OD_adjusted <- ((df$OD) - 41.48)
Тем не менее, я хотел бы автоматизировать процесс с помощью функции, и вот где я застрял:
AUC_OD <- function(df){
return_value_1 = df %>%
arrange(OD) %>%
filter(OD [1,2) %>%
slice_(1)
colnames(return_value_1)[3] <- "OD_adjusted"
if (nrow(return_value_1) > 0 ) { subtract
(return_value_1 [1,2] #into new row
else add
(return_value_1 [1,2] #into new row
}
1 ответ
Получаем первый элемент 'OD' и вычитаем из столбца
library(dplyr)
df1 %>%
mutate(OD_adjusted = OD- OD[1])
Или используя base R
df1$OD_adjusted <- with(df1, OD - OD[1])