在变量名的末尾添加一个字母

时间:2015-10-15 16:42:59

标签: r

我有一个包含这些变量名称的数据框:"X_1","X_106","X_110","X_111","X_112"以及以字母表中的其他字母开头的其他名称。我有兴趣仅将"_v1"附加到以"X"开头的变量,如上所示。我如何在R?

中完成此任务

3 个答案:

答案 0 :(得分:5)

或只是:

colnames(dat) <- sub("(^X.*)", "\\1_v1", colnames(dat))

例如:

dat <- data.frame(a=1, b=2, c=3,
                  X_1=4, X_106=5, X_110=6, X_111=7, X_112=8)

dplyr::glimpse(dat)
## Observations: 1
## Variables: 8
## $ a     (dbl) 1
## $ b     (dbl) 2
## $ c     (dbl) 3
## $ X_1   (dbl) 4
## $ X_106 (dbl) 5
## $ X_110 (dbl) 6
## $ X_111 (dbl) 7
## $ X_112 (dbl) 8

colnames(dat) <- sub("(^X.*)", "\\1_v1", colnames(dat))

dplyr::glimpse(dat)
## Observations: 1
## Variables: 8
## $ a        (dbl) 1
## $ b        (dbl) 2
## $ c        (dbl) 3
## $ X_1_v1   (dbl) 4
## $ X_106_v1 (dbl) 5
## $ X_110_v1 (dbl) 6
## $ X_111_v1 (dbl) 7
## $ X_112_v1 (dbl) 8

答案 1 :(得分:2)

names(df2) <- ifelse(grepl("^X",names(df2)), paste0(names(df2),"_v1"), names(df2))

答案 2 :(得分:1)

我相信它会如此简单:

library(stringr)
names(my_data) <- ifelse(str_detect(names(my_data), "^X_"), paste(names(my_data), "v1", sep = "_"), names(my_data))

str_detect(names(my_data), "^X_")是查找以X _开头的名称。