У меня есть такой фрейм данных
ID <- c("ID21","ID22","ID23","ID24")
STR_PL_CAN_EVOLVE_PROCESS <- c("CCP_A,CCP_B","CCQ_A,CCQ_B,CCQ_C","IOT_A,CCP_B","CCQ_B,IOT_B")
Average <- c(7.5,6.5,7.1,6.6)
STR_VD_CAN_MEASURE_PROCESS <- c("Length,Breadth","Breadth,Width","Height,Length,Width","Width,Length")
Passfail <- c("Pass","Pass","Fail","Fail")
df <- data.frame(ID,STR_PL_CAN_EVOLVE_PROCESS,Average,STR_VD_CAN_MEASURE_PROCESS,Passfail,stringsAsFactors=FALSE)
Я пытаюсь разделить значения в столбцах, заканчивающихся на «process», на несколько столбцов, используя tidyverse, и делаю это таким образом.
library(tidyverse)
df1 <- df %>%
separate(STR_PL_CAN_EVOLVE_PROCESS,
paste0("ST_PL_CA_EV_PR","_Path",
seq(1:10)),
sep = ",") %>%
separate(STR_VD_CAN_MEASURE_PROCESS,
paste0("ST_VD_CA_ME_PR","_Path",
seq(1:10)),
sep = ",")
Это работает, но я здесь много чего делаю вручную (введите имена столбцов, новые имена столбцов).Вот некоторые вещи, которые я пытаюсь достичь
- Автоматически предоставлять имена столбцов, оканчивающихся на " PROCESS ", и разделять эти столбцы.
- Извлечение первых 2 символов в именах столбцов (разделенных подчеркиванием) в качестве новых имен столбцов.Например:
STR_PL_CAN_EVOLVE_PROCESS
становится ST_PL_CA_EV_PR
- Удалить столбцы, которые являются только NA
Мой желаемый вывод равен
ID ST_PL_CA_EV_PR_Path1 ST_PL_CA_EV_PR_Path2 ST_PL_CA_EV_PR_Path3 Average ST_VD_CA_ME_PR_Path1 ST_VD_CA_ME_PR_Path2 ST_VD_CA_ME_PR_Path3 Passfail
ID21 CCP_A CCP_B <NA> 7.5 Length Breadth <NA> Pass
ID22 CCQ_A CCQ_B CCQ_C 6.5 Breadth Width <NA> Pass
ID23 IOT_A CCP_B <NA> 7.1 Height Length Width Fail
ID24 CCQ_B IOT_B <NA> 6.6 Width Length <NA> Fail
Мой фактический набор данных содержит около 35 столбцов, оканчивающихся на «ПРОЦЕСС».Может ли кто-нибудь указать мне правильное направление?