Как написать простую функцию для объединения всех этих похожих кодов? - PullRequest
0 голосов
/ 01 октября 2019

В исходных данных необходимо очистить сотни столбцов. Каждая их часть имеет похожую структуру. Для анализа мне нужно объединить все части в одну с одинаковыми именами.

Однако я действительно не знаю, как это сделать с переменными и символами. Должен ли я использовать! ?

Q14_1 <- Q14 %>% select(province, ends_with("open_1"))
colnames(Q14_1) <- c("province", paste0("A", 1:11))

Q14_2 <- Q14 %>% select(province, ends_with("open_2"))
colnames(Q14_2) <- c("province", paste0("A", 1:11))

Q14_3 <- Q14 %>% select(province, ends_with("open_3"))
colnames(Q14_3) <- c("province", paste0("A", 1:11))

Q14_4 <- Q14 %>% select(province, ends_with("open_4"))
colnames(Q14_4) <- c("province", paste0("A", 1:11))

Q14_bind <-bind_rows(Q14_1, Q14_2, Q14_3, Q14_4)

Есть ли простой способ решить эту проблему?

Спасибо доктору Парфе.

Его код работает!

df_list <- lapply(paste0("open_", 1:20), function(i) 
  setNames(select(Q14, province, ends_with(i)), 
           c("province", paste0("A", 1:11)))
)

df_list%>% bind_rows ()

1 Ответ

1 голос
/ 01 октября 2019

Рассмотрим lapply для построения списка фреймов данных для bind_rows в конце и используйте setNames в качестве правой версии colnames()<-:

df_list <- lapply(paste0("open_", 1:4), function(i) 
                       setNames(select(Q14, province, ends_with(i)), 
                                c("province", paste0("A", 1:11)))
           )

Q14_bind <- bind_rows(df_list)
...