Итеративное подразделение кадра данных на основе части имени столбца - PullRequest
1 голос
/ 02 ноября 2019

Мой пример данных.

structure(list(ID = structure(c(1L, 10L, 11L, 12L, 13L, 14L, 
15L, 16L, 17L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L), .Label = c("A1", 
"A10", "A11", "A12", "A13", "A14", "A15", "A16", "A17", "A2", 
"A3", "A4", "A5", "A6", "A7", "A8", "A9"), class = "factor"), 
    X_value = 45:61, red_fruit = c(0.45, 0.38, 0.75, 0.9, 0.75, 
    0.86, 0.49, 0.33, 0.38, 0.75, 0.9, 0.75, 0.86, 0.49, 0.33, 
    0.43, 0.24), green_fruit = c(0.75, 0.86, 0.49, 0.33, 0.27, 
    0.38, 0.75, 0.9, 0.75, 0.86, 0.49, 0.33, 0.27, 0.75, 0.86, 
    0.49, 0.33), red_cars = c(0.73, 0.26, 0.65, 0.95, 0.87, 0.15, 
    0.73, 0.26, 0.65, 0.95, 0.87, 0.15, 0.73, 0.26, 0.13, 0.95, 
    0.87), green_cars = c(0.76, 0.98, 0.97, 0.53, 0.27, 0.37, 
    0.12, 0.53, 0.27, 0.37, 0.12, 0.53, 0.27, 0.37, 0.12, 0.45, 
    0.43)), class = "data.frame", row.names = c(NA, -17L))

Я пытаюсь выяснить, как создать подмножество данных, используя имена столбцов. Таким образом, у меня есть столбцы, такие как «red_fruit», а другой называется «green_car». Я пытаюсь создать такие факторы, чтобы объекты слева от подчеркивания (например, «красный» и «зеленый») были их собственными кадрами данных. Поэтому я пытаюсь создать «красный» и «зеленый». Таким образом, конечный фрейм данных «красного» фрейма будет выглядеть примерно такреализовать также)

dfred=df2 %>% 
  select("X_value", starts_with("red"))

То же самое можно было бы сделать, чтобы сделать зеленый фрейм данных

Мой вопрос заключается в том, существует ли обратный (или не для цикла) способ сделать это таким образом, чтобыкаждое уникальное значение слева от подчеркивания в именах столбцов (например, насколько «красный» и «зеленый» уникальны) получает входные данные в starts_with() итеративно и позволяет мне создать хороший список с каждым из поднаборов данных? Кто-то сказал мне, что я должен сделать какое-то регулярное выражение, чтобы сделать эту работу, но мне любопытно, есть ли другие альтернативы (или если регулярное выражение легче, чем я думаю)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...