мой вопрос больше о кодировании с помощью r. У меня есть следующий тип фрейма данных Микки Мауса в R:
df <- data.frame(a=c(1:6), b=c("apple", "orange 1", "xxx", "lemon", "orange 2", "yyy"))
Цель: Я хотел бы создать новую переменную "c", которая имеет значения "xxx" и "yyy" в 3-м и6-я строка соответственно.
Предостережение: я не могу сопоставить "xxx" и "yyy", просто потому, что это невозможно в моих реальных данных. С помощью регулярных выражений моя идея состоит в том, чтобы сопоставить «оранжевый», а затем извлечь данные из следующей строки.
Я пытался:
regx <- "^orange\\s\\d+[\r\n]+(.*)"
df <- df %>%
extract(b, "c", regx, remove=FALSE)
Но это не работает, так как новая строкав R это не новая строка или возврат каретки, я думаю.
Идея будет в следующем: я хотел бы обнаружить строки, которые включают "оранжевый", то есть:
df[grepl("^orange\\s\\d+", df$b), ]
Затем возьмите номера строк и скажите R извлечь последующие строки, чтобы создать новую переменную "c"
Чтобы сделать ее более сложной, моя задача на самом деле еще сложнее! :
В следующем задании мне нужно извлечь все строки между «orange 1», «orange 2», ..., «orange 10» и создать новую переменную, аналогичную предыдущей.