砍掉每个变量名的首字母

时间:2019-06-11 06:23:33

标签: r dplyr tidyverse

我有一些看起来像这样的数据:

    country agdp apop
1        US  100  100
2 Australia   50   50

变量名称为agdpapop,但我希望它们分别为gdppop。我的真实数据有很多变数,都需要进行转换。

这就是我想要的结果:

 country gdp pop
1        US  100  100
2 Australia   50   50

下面的可复制代码:

df <- data.frame(stringsAsFactors=FALSE,
     country = c("US", "Australia"),
        agdp = c(100, 50),
        apop = c(100, 50)

desired_df <- data.frame(stringsAsFactors=FALSE,
     country = c("US", "Australia"),
        gdp = c(100, 50),
        pop = c(100, 50)

4 个答案:

答案 0 :(得分:4)

使用var list = new List<Question> { new Question() { question = "Question1", option = new string[] { "abc", "cde", "efg"}, score = new string[] { "abc", "cde", "efg" } }, new Question(){}, new Question(){}, new Question(){} }; ,我们可以提取除第一个字符以外的所有内容并分配名称。

regex

答案 1 :(得分:3)

一种dplyr可能是:

df %>%
 rename_at(2:length(.), list(~ substr(., 2, nchar(.))))

    country gdp pop
1        US 100 100
2 Australia  50  50

base R相同:

names(df)[-1] <- substr(names(df)[-1], 2, nchar(names(df)[-1]))

答案 2 :(得分:3)

这是一种方法

library(stringr)

names(df)[-1] = str_sub(names(df)[-1], 2)

答案 3 :(得分:1)

一个人也可以做:

仅使用base(可以使用setdiff%in%来“自动”选择。):

sapply(names(df), function(x) ifelse(x=="country",x,substring(x,2,nchar(x))))

tidyverse以来,rename_at显得格外优雅:

names(df)<-unlist(names(df) %>% 
  map(.,function(x) ifelse(x=="country",x,substring(x,2,nchar(x)))))