#r #data.table
#r #данные.таблица
Вопрос:
data=data.frame(cat=runif(100), dog = runif(100), fox = runif(100), bunny = runif(100))
Я просто хочу переименовать так, чтобы cat = var01, dog = var04, fox = var07, bunny = var09 .
Ответ №1:
Мы можем использовать rename
именованный вектор и вычислять с помощью ( !!!
)
library(dplyr)
nm1 <- c('cat', 'dog', 'fox', 'bunny')
nm2 <- c('var01', 'var04', 'var07', 'var09')
Или создайте его с seq
nm2 <- sprintf('vard', seq(1, length.out = length(nm1), by = 3))
data <- rename(data, !!! setNames(nm1, nm2))
Или с setnames
помощью from data.table
изменить имена столбцов на месте, предоставив вектор «старых», «новых» имен
library(data.table)
setDT(data)
setnames(data, nm1, nm2)
names(data)
#[1] "var01" "var04" "var07" "var09"
Комментарии:
1. допустим, это случай, когда у меня есть 20 переменных. могу ли я просто сделать что-то вроде того, где новые имена переменных вставляются («var», seq(01, 09, 03)) ?
2. @bvowe Вы можете создать это как
paste0("var", seq(1, 60, 3))
(для 20 переменных3.@bvowe или использовать
length.out
, т.е.nm2 <- paste0("var", seq(1, length.out = 20, by = 3))
nm1 <- names(data); setnames(data, nm1, nm2)
4. @bvowe если вы используете
seq
withby = 3
, это будетvar10
вместоvar09
Ответ №2:
Если вы хотите переименовать только определенные столбцы из данных, вы можете использовать
library(dplyr)
data %>%
rename(var01 = cat, var04 = dog, var07 = fox, var09 = bunny) %>%
head
# var01 var04 var07 var09
#1 0.3817939 0.82917877 0.29435146 0.07547698
#2 0.7235733 0.89619003 0.11643227 0.07026431
#3 0.2500442 0.01800189 0.02804676 0.29175499
#4 0.1229257 0.87631870 0.86204151 0.83269660
#5 0.2191805 0.90387735 0.75390315 0.59554349
#6 0.5019568 0.87161199 0.05806871 0.31988761