Załóżmy, że mam zestaw danych z 6 kolumnami i chcę zastąpić ciągi w nazwach kolumn, w tym ciąg „likes_comment” do ciągu „number_likes”. ...

0
Scijens 24 czerwiec 2021, 13:00

4 odpowiedzi

Najlepsza odpowiedź

Możesz użyć rename_with -

library(dplyr)
library(stringr)

da %>% rename_with(~str_replace(., 'likes_comment', 'number_likes'))

#  number_likes_1 number_likes_2 number_likes_3 quotes_comment1
#1              1              2              5               2
#2              2              2              2               1
#3              3              3              3               3
#4              4              1              1               4

#  quotes_comment2_ quotes_comment3
#1                3               2
#2                5               3
#3                7               1
#4                1               2
1
Ronak Shah 24 czerwiec 2021, 10:04

Czy to działa:

names(da)[grepl('likes_comment',names(da))] <- gsub('likes_comment','number_likes',names(da)[grepl('likes_comment',names(da))])
da
  number_likes_1 number_likes_2 number_likes_3 quotes_comment1 quotes_comment2_ quotes_comment3
1              1              2              5               2                3               2
2              2              2              2               1                5               3
3              3              3              3               3                7               1
4              4              1              1               4                1               2
1
Karthik S 24 czerwiec 2021, 10:02

Użyj sub:

names(da) <- sub("likes_comment_(\\d+)", "number_likes_\\1", names(da))
1
Tim Biegeleisen 24 czerwiec 2021, 10:03

Ponieważ OP jest oznaczony data.table:

library(data.table)
setnames(da, sub('likes_comment', 'number_likes', names(da), fixed = TRUE))
1
sindri_baldur 24 czerwiec 2021, 10:10