R - Выбор и итеративное переименование столбца символом - PullRequest
0 голосов
/ 06 апреля 2020

Я получил большой фрейм данных с огромным количеством переменных, и я хотел бы выбрать и переименовать некоторые из них. Я хотел бы сделать это итеративно, выбирая их с помощью выбранного персонажа. Подумайте, у меня есть сотни переменных, поэтому вызывать их по индексам было бы кровопролитием. Есть ли решение, чтобы сделать это элегантным способом?

Например, я получил следующие имена столбцов:

 [1] "Compound.Name"  "owl.7.aa"       "owl.8.aa"       "owl.onco.72.aa" "owl.9.aa"       "owl.10.aa"     
 [7] "owl.11.aa"      "owl.12.aa"      "owl.13.aa"      "owl.7.3.aa"     "owl.8.3.aa"     "esp.8.bag"     
[13] "esp.7.bag"      "esp.72.bag"     "esp.9.bag"      "esp.10.bag"     "esp.11.bag"     "esp.12.bag"    
[19] "esp.13.bag"     "esp.7.3.bag"    "esp.8.3.bag"

Я хочу выбрать «owl.7.aa» и «esp.7.bag» по символу «7» и замените их новым именем, таким как «семь» или «7». Затем я хотел бы проделать ту же самую работу с «owl.8.aa» и «esp.8.bag», заменив их на «восемь» и так далее.

Другими словами, я хотел бы объединить эксперименты по их идентификационным номерам (7, 8, 72, 9 и т. Д. c.).

Любое предложение?

Спасибо заранее

1 Ответ

0 голосов
/ 06 апреля 2020

Мы можем использовать english

library(english)
library(gsubfn)
gsubfn("(\\d+)", ~ as.character(english(as.numeric(x))), names(df1))

Или это может быть

gsubfn("[A-Za-z]+[^0-9]+(\\d+)\\..*", ~ as.character(english(as.numeric(x))),
               names(df1)
#[1] "Compound.Name" "seven"         "eight"         "seventy-two"   "nine"          "ten"          
#[7] "eleven"        "twelve"        "thirteen"      "seven"         "eight"         "eight"        
#[13] "seven"         "seventy-two"   "nine"          "ten"           "eleven"        "twelve"       
#[19] "thirteen"      "seven"         "eight"     

data

names(df1)
c("Compound.Name", "owl.7.aa", "owl.8.aa", "owl.onco.72.aa", 
"owl.9.aa", "owl.10.aa", "owl.11.aa", "owl.12.aa", "owl.13.aa", 
"owl.7.3.aa", "owl.8.3.aa", "esp.8.bag", "esp.7.bag", "esp.72.bag", 
"esp.9.bag", "esp.10.bag", "esp.11.bag", "esp.12.bag", "esp.13.bag", 
"esp.7.3.bag", "esp.8.3.bag")
...