R идентифицирует первое значение во фрейме данных и создает новую переменную, добавляя / вычитая это из всех значений в фрейме данных в новом столбце - PullRequest
0 голосов
/ 04 сентября 2018

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

У меня 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 Ответ

0 голосов
/ 04 сентября 2018

Получаем первый элемент 'OD' и вычитаем из столбца

library(dplyr)
df1 %>%
   mutate(OD_adjusted = OD- OD[1])

Или используя base R

df1$OD_adjusted <- with(df1, OD - OD[1])
...