Вот как вы можете использовать dplyr
:
library(dplyr)
test <- data.frame(A = c(1, 2, 3),
B = c(1, 1, 1),
C = c(1, 1, 1))
testColumns <- c(2, 3, 4) # Values you want to flag
Теперь, когда у нас есть фрейм данных и вектор со значениями, которые мы хотим пометить в новом столбце, давайте использовать rowwise()
дляпопросите R просмотреть каждую строку фрейма данных, а затем комбинацию mutate()
для создания нового столбца D , основанного на различных случаях.
Мы указываем тестовые случаи, а затемих желаемые значения, используя case_when()
.
Вместо присвоения результата нашего канала новому объекту, давайте используем прямой канал %<>%
.
Вот как мы это делаем:
test %<>% # Use forward pipe
rowwise() %>% # Look at test on a 'by row' basis'
mutate(D = case_when(A %in% testColumns ~ 1, # use mutate to create a new column D
B %in% testColumns ~ 1,
C %in% testColumns ~ 1,
TRUE ~ 0))
Это дает нам следующую таблицу:
print(test)
## A tibble: 3 x 4
# A B C D
# <dbl> <dbl> <dbl> <dbl>
#1 1 1 1 0
#2 2 1 1 1
#3 3 1 1 1
Вот несколько полезных ссылок для некоторых функций, которые мы использовали:
mutate()
rowwise()
case_when()