R данные.Таблица переименовывает много переменных

#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 with by = 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