У меня есть датафрейм с двумя столбцами Text и Colours.
library(tidyverse)
library(purrr)
# sample dataframe
df <- data.frame(Text = c("text1", "text2", "text3", "text4"),
Colours = c("blue", "white", "green", "yellow"), stringsAsFactors = F)
Мне нужен фрейм данных, скажем, NOT_Blue, который включает в себя все строки, кроме строк, содержащих «синий». Другими словами, датафрейм со всеми цветами, кроме тех, которые не равны "синему". В конце я хотел бы написать эти кадры данных как CSV-файлы.
Для одного кадра данных с использованием dplyr::filter
и !=
(не равно) будет работать
not_blue <- df %>% filter(!Colours == "blue")
not_blue
Text Colours
1 text2 white
2 text3 green
3 text4 yellow
Дело в том, что мне нужно создать разные фреймы данных для каждого цвета / категории.
Полагаю, мне нужно будет использовать одну из функций семейства apply / map. Поэтому я создаю вектор с цветами, надеясь использовать его в функции.
# colours to feed the function
colours <- c("blue", "white", "green", "yellow")
# trying to make a function
remaining_colours <- function(x) {
df <- df %>% filter(!Colours == x)
}
# using the formula with map_df of purrr
map_df(colours, remaining_colours) %>% arrange(Text)
# epic fail results
Text Colours
1 text1 blue
2 text1 blue
3 text1 blue
4 text2 white
5 text2 white
6 text2 white
7 text3 green
8 text3 green
9 text3 green
10 text4 yellow
11 text4 yellow
12 text4 yellow
Не могли бы вы мне помочь или указать, как сделать применение / карту / петлю для этого случая?
Заранее спасибо!