Переименуйте все значения в столбце в R - PullRequest
0 голосов
/ 28 января 2020

У меня есть набор данных, df, со следующими значениями:

ID                                        Duration   
abcdefghijklmnopqrstuvwxyz                1 sec
abcdefghijklmnopqrstuvwxyz1               0 sec
abcdefghijklmnopqrstuvwxyz2               0 sec                    
abcdefghijklmnopqrstuvwxyz3               1 sec
abcdefghijklmnopqrstuvwxyz4               0 sec

Цель: я строю гистограмму, а значения слишком длинные. Я хотел бы преобразовать значения в идентификаторе столбца в более короткое значение, например:

ID                                        Duration   
A                                         1 sec
B                                         0 sec
C                                         0 sec                    
D                                         1 sec
E                                         0 sec

. Для этого нужно ли указывать и записывать каждое значение в строке? (их 100)

rename.values(df, abcdefghijklmnopqrstuvwxyz="A")...

Ответы [ 2 ]

2 голосов
/ 28 января 2020

Вы можете просто создать новый столбец идентификаторов, который решит вашу проблему, а также сохранит ваши исходные идентификаторы (это предполагает отсутствие дублирующих идентификаторов).

df <- df %>%
   mutate(ID2 = 1:nrow(df)) %>%
   select(ID2, Duration)        #  OR       select(-ID) : deselects ID, keeps everything else.
2 голосов
/ 28 января 2020

Без использования dplyr, если вы хотите переименовать все значения в вашем столбце ID в более короткий идентификатор (и при условии, что все ваши идентификаторы разные), вы можете написать:

df$ID <- paste0("A",1:nrow(df))

Альтернатива: использование gsub

В качестве альтернативы, если у вас есть очень длинный шаблон, который вы хотите заменить sh (например, abcdef ....), вы можете использовать gsub:

df$ID <- gsub("abcdefghijklmnopqrstuvwxyz","A",df$ID)

Преимущество gsub состоит в том, что, если ваш идентификатор повторяется несколько раз, он сохранит это повторение, поскольку он заменит только первую часть строки идентификатора.

Пример

a <- paste0(letters[1:26], collapse = "")
df <- data.frame(ID = paste0(a,1:100),
                value = rnorm(100))

Итак, ваш df выглядит так:

  ID      value
1 A1  2.6977546
2 A2  1.9434639
3 A3  0.4191808
4 A4 -0.1545246
5 A5  2.0112518
6 A6  0.5877203
...

Теперь, если вы замените строки символов ID по следующей команде:

df$ID <- paste0("A",1:100)

или с gsub:

df$ID <- gsub("abcdefghijklmnopqrstuvwxyz","A",df$ID)

И вы получите:

  ID      value
1 A1  2.6977546
2 A2  1.9434639
3 A3  0.4191808
4 A4 -0.1545246
5 A5  2.0112518
6 A6  0.5877203
...

Итак, вы сохранили все свои столбцы и значения в том же порядке, и вы просто изменяете столбец идентификатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...