Фон:
Всем привет,
Я надеялся, что вы поможете мне вывести мое понимание кода на новый уровень. Я пытаюсь осмыслить списки, их преимущества и использовать их для сокращения избыточного кода. Сколько бы я ни читал о списках и семействах приложений в Интернете, я до сих пор не могу понять, как реализовать их в своей повседневной работе.
Вот ситуация, которую, как мне кажется, можно значительно упростить — это тип кода, который я часто пишу, и который я хочу заменить более кратким форматом.
Пример:
Давайте представим, что все данные mtcars
относятся к одному году наблюдения, скажем, к 2018. Давайте также представим, что у нас есть данные, возвращающиеся ежегодно к 2000 году. Итак, теперь есть «18» mtcars data.frames со столбцом года, в котором указан год, и мы берем 18 наблюдений и свяжите их по строкам в один data.frame. Это пример типа данных, с которыми я сейчас работаю. Наблюдения разделены по годам.
data <- mtcars %>%
group_by(date) %>%
mutate(rank = dense_rank(desc(mpg))
))
Манипуляции с данными, которые я хотел бы упростить:
Фильтрация: я хочу отфильтровать все за данный год по разным рейтингам миль на галлон.
data %>% filter(gear == 4, date == '2005') %>% filter(rank %in% c(1:5))
data %>% filter(gear == 4, date == '2005') %>% filter(rank %in% c(6:10))
data %>% filter(gear == 4, date == '2005') %>% filter(rank %in% c(11:15))
Как лучше всего упростить избыточный блок кода выше?
Например, я хотел бы использовать функцию seq
и сделать что-то вроде:
data %>%
filter(gear == 4, date == '2005') %>%
filter(rank %in% seq(1, 100, by = 5))
и сохраните выходные данные каждой ранговой группы в список, а затем отобразите все эти списки в ggplot.
Любая помощь или совет будут высоко оценены, я пытаюсь улучшить свою игру здесь.
year
,min
иmax
, присоединить его кmtcars
по годам, а затемfilter(mtcars, year >= min & year <= max)
- person jdobres   schedule 14.05.2018