sto Gestione di un DB con formato di ora come:Pad con zeri a larghezza comune
HOUR ID
1 2
10 4
5 6
20 6
vorrei inserire uno zero nel valore con 1 personaggio e memorizzarli in una nuova colonna denominata Nhour, come:
NHOUR HOUR ID
01 1 2
10 10 4
05 5 6
20 20 6
Fino ad ora sto lottando con qualcosa di simile (seguo alcuni suggerimenti già previsti IfElse nel forum):
DB$NHOUR<-with(DB,ifelse(nchar(HOUR,type="chars")==1),sprintf("%02d",HOUR),as.numeric(HOUR))
ma senza alcun successo! R segnala sempre che l'elemento "sì" non è specificato, ecc.
Come sempre, qualsiasi consiglio è apprezzato!
Sembra che tu stia facendo le cose in modo troppo complicato. Perché non solo 'sprintf ("% 02d ", DB $ HOUR)'? Il punto principale di questa funzione è che riempie gli zeri iniziali con una lunghezza di 2 caratteri. – joran
'sprintf' e' as.numeric' non sono all'interno della chiamata 'ifelse' come devono essere; c'è una parentesi chiusa prima di loro. Inoltre, stai mixando i tipi di ritorno all'interno di "ifelse" che porteranno alla promozione del tipo che potresti non aspettarti. –
Infine, visto che sei relativamente nuovo qui e hai fatto una serie di domande, penso che sarebbe utile sottolineare che quando una risposta risolve il tuo problema, è molto utile fare clic sul segno di spunta accanto ad esso. Ciò migliora notevolmente il valore della domanda (e del sito) fornendo una chiara indicazione agli utenti futuri su quale risposta ha risolto il problema. Tieni sempre presente, tuttavia, che non sei obbligato ad accettare mai una risposta; è apprezzato, ma è sempre la tua scelta. – joran