Переименовать диапазон столбцов в кадре данных - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь переименовать диапазон столбцов в кадре данных, чтобы они имели формат [V1: V5]:

result_df = data.frame(V1 = 1, V2 = 2, V3 = 3, V4 = 4, V5 = 5, colnamethatshouldntberenamed = 6)

Если у существующего информационного кадра есть диапазон чисел где-то в их именах, это относительно просто (хотя я думаю, что, вероятно, есть способ сделать это одной строкой кода, а не двумя):

df1 = data.frame(X1q = 1, X2q = 2, X3q = 3, X4q = 4, X5q = 5, colnamethatshouldntberenamed = 6)

names(df1) <- gsub("X", "V", names(df1))
names(df1) <- gsub("q", "", names(df1))

Но что, если имена столбцов имеют совершенно случайные имена?

df2 = data.frame(name = 1, col = 2, random = 3, alsorandom = 4, somethingelse = 5, colnamethatshouldntberenamed = 6)

Есть ли способ переименовать все эти столбцы за один раз? (при условии, что они являются смежными столбцами в кадре данных, но могут быть другие столбцы в кадре данных с именами, которые не нужно изменять)

1 Ответ

0 голосов
/ 12 мая 2018

Если у вас другое количество столбцов и / или вы хотите %>%, вы можете использовать purrr::set_names().

Например:

Пример данных с 10 столбцами:

example1 <- data.frame(replicate(10,sample(0:1,5,rep=TRUE)))
example1 
  X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1  1  1  0  1  1  1  0  1  0   1
2  0  0  1  0  1  1  1  0  0   1
3  0  0  1  0  0  1  1  1  0   0
4  0  1  0  1  1  0  1  0  0   0
5  1  0  0  1  1  0  1  1  0   1

Вы можете использовать seq_along внутри set_names, который будет переименовывать столбцы по порядку (с конвейером):

example1 %>% 
    set_names(c(seq_along(example1)))

Результаты:

 1 2 3 4 5 6 7 8 9 10
1 1 1 0 1 1 1 0 1 0  1
2 0 0 1 0 1 1 1 0 0  1
3 0 0 1 0 0 1 1 1 0  0
4 0 1 0 1 1 0 1 0 0  0
5 1 0 0 1 1 0 1 1 0  1

Та же идея с 15 столбцами и именованием их с помощью вставки в set_names:

 example2 <- data.frame(replicate(15,sample(0:1,10,rep=TRUE)))

  example2 %>% 
set_names(c(paste("VarNum", seq_along(example2), sep = "")))

Результаты

 VarNum1 VarNum2 VarNum3 VarNum4 VarNum5 VarNum6 VarNum7 VarNum8 VarNum9 VarNum10 VarNum11 VarNum12 VarNum13 VarNum14 VarNum15
1       0       1       0       0       0       0       0       1       1        1        1        0        1        0        1
2       1       1       0       0       0       1       0       1       1        0        0        0        1        0        1
3       1       1       0       1       0       1       1       1       1        1        1        0        1        0        1
4       0       0       0       0       1       1       1       1       0        1        1        0        0        0        1
5       1       1       0       1       0       0       1       0       0        1        1        0        0        0        0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...