[英]Renaming multiple columns in R
我希望這不是一個重復的問題,因為我找不到我有興趣使用的答案。 我有 70 列,我想重命名它們。 我知道幾種方法作為例子:
df1<-setmames (df1, c("BA1", "MA2", "NA3"...), c( "AB1","QB2","Q3"...))
但是這些方法沒有幫助,因為我們有一個非常大的腳本。 我想知道我們是否可以使用tidyverse
用一個tidyverse
本來做到這tidyverse
?
舉個例子,我可以顯示三列,假設我有這個表:
AB1 AB2 AB3 12 13 13 12 13 13 12 11 13 12 13 17 12 13 16
我想要這張桌子
MZ1 MZ2 MZ3 12 13 13 12 13 13 12 11 13 12 13 17 12 13 16
考慮到這只是一個例子,我有 70 列。
我們可以使用索引或列名
names(df1)[1:70] <- v1
在哪里
v1<- c("AB1", "QB2", ...)
使用dplyr
,我們可以使用rename_at
library(dplyr)
library(stringr)
df1 <- df1 %>%
rename_at(1:70, ~ v1)
如果我們重命名以“AB”開頭的列
names(df1)
#[1] "x1" "x2" "AB1" "AB2"
df1 %>%
rename_at(vars(matches('^AB\\d+$')), ~ str_replace(., 'AB', 'MZ'))
# x1 x2 MZ1 MZ2
#1 1 6 -0.5458808 0.6048889
#2 2 7 0.5365853 0.3707349
#3 3 8 0.4196231 0.6716903
#4 4 9 -0.5836272 0.6729823
#5 5 10 0.8474600 0.3204306
或者在base R
i1 <- grep("^AB\\d+$", names(df1))
names(df1)[i1] <- sub("AB", "MZ", names(df1)[i1])
df2 <- df2 %>%
rename_at(vars(matches("^AB\\d+$")), ~ str_replace(., "AB", "MZ"))
df2
# MZ1 MZ2 MZ3
#1 12 13 13
#2 12 13 13
#3 12 11 13
#4 12 13 17
#5 12 13 16
set.seed(24)
df1 <- data.frame(x1 = 1:5, x2 = 6:10, AB1 = rnorm(5), AB2 = runif(5))
原始數據值
df1
# x1 x2 AB1 AB2
#1 1 6 -0.5458808 0.6048889
#2 2 7 0.5365853 0.3707349
#3 3 8 0.4196231 0.6716903
#4 4 9 -0.5836272 0.6729823
#5 5 10 0.8474600 0.3204306
df2 <- structure(list(AB1 = c(12L, 12L, 12L, 12L, 12L), AB2 = c(13L,
13L, 11L, 13L, 13L), AB3 = c(13L, 13L, 13L, 17L, 16L)),
class = "data.frame", row.names = c(NA, -5L))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.