Как я могу удалить первое x количество символов имени столбца из 200+ столбцов, причем каждый столбец не совпадает с количеством символов - PullRequest
0 голосов
/ 15 июня 2019

Как я могу удалить определенное количество символов из имени столбца из 200+ имен столбцов, например: "Q1: GOING OUT?"и "Q5: STATE, PROVINCE, COUNTY, ETC" Я просто хочу удалить "Q1:" и "Q5:", я посмотрел вокруг, но не смог найти тот, где мне не нужно переименовывать вручнуюих вручную.Есть ли какие-либо функции или способы использовать его через tidyverse?Я только начинаю с R в течение 2 месяцев.

Мне действительно нечего показать.Я подумал об использовании циклов for и, возможно, о gsub или case_when, но не совсем понимаю, как их правильно использовать.

#probably not correctly written but tried to do it anyways

for ( x in x(0:length) and _:(length(CandyData)-1){
  front -> substring(0:3)
  back -> substring(4:length(CandyData))
  print <- back
}

У меня действительно нет ошибок, потому что у меня нет 'я не смог заставить его работать должным образом.

Ответы [ 2 ]

0 голосов
/ 15 июня 2019

Ответ H 1 по-прежнему лучший: функции sub() или gsub() будут работать. И не бойтесь регулярных выражений, это мощный инструмент управления данными.

Вот версия gsub:

names(df) <- gsub("^.*:","",names(df))

Это работает следующим образом: для каждого имени извлекайте символы до достижения ":", а затем удаляйте все извлеченные символы (включая ":").

Не забывайте голосовать H 1 soluce в комментариях

0 голосов
/ 15 июня 2019

Попробуйте это:

    col_all<-c("Q1:GOING OUT?","Q2:STATE","Q100:PROVINCE","Q200:COUNTRY","Q299:ID") #This is an example.If you already have a dataframe ,you may get colnames by **col_all<-names(df)**

    for(col in 1:length(col_all))              # Iterate over the col_all list
    {           
        colname=col_all[col]                   # assign each column name to variable colname at each iteration
        match=gregexpr(pattern =':',colname)   # Find index of : for each colname(Since you want to delete characters before colon and keep the string succeeding :
        index1=as.numeric(match[1])            # only first element is needed for index
        if(index1>0)
        {
            col_all[col]=substr(colname,index1+1,nchar(colname))#Take substring after : for each column name and assign it to col_all list
        }        

    }

    names(df)<-col_all                  #assign list as column name of dataframe
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...