быстрое перекодирование - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть следующий пример data.frame из большого data.frame

df <- data.frame('V1'=c(0,0,0,2,2,2,1,1,1),'V2'= c(1,1,1,2,2,2,0,0,0))

Мой вопрос заключается в том, что можно эффективно применить для преобразования каждого 0 в 00, каждого 1 в01 и каждый 2 в 22 в data.frame.Я знаю, что могу использовать что-то вроде функции apply или for loop, но не знаю, что будет быстрее и эффективнее.

С наилучшими пожеланиями.

1 Ответ

0 голосов
/ 12 ноября 2018

Мы можем использовать sprintf, чтобы дополнить 0 слева, а затем изменить '02' на '22' или sub или replace и т. Д.

df[] <-  lapply(df, function(x)  sub("^02", "22", sprintf(fmt = '%02d', x)))

Или с strrep и затем replace с '11' с '01'

df[] <- lapply(df, strrep, 2)
replace(df, df ==11, '01')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...