2015-03-11 20 views
5

Vorrei accorciare i valori di una colonna del mio data.frame. In questo momento, ogni valore è costituito da molte lettere, come ad esempioR: Come ridurre i valori del frame di dati al primo carattere

df$col1 
[1] AHG ALK OPH BCZ LKH QRQ AAA VYY 

quello che ho bisogno è solo la prima lettera:

df$col1 
[1] A A O B L Q A V 

Ho letto le altre voci che suggerisce di utilizzare gsub, stri_replace_all_charclass, o strsplit . Ma temo di aver bisogno di aiuto per implementarlo.

+1

'substr ("GAH" , 1, 1) ' – Roland

+2

' strtrim (x, width) ' – rmuc8

risposta

6

È possibile utilizzare strtrim

df$col1 <- strtrim(df$col1, 1) 
+2

Non conoscevo questa funzione. Io uso una funzione simile 'str_trim' da' stringr' per rimuovere lo spazio bianco. Grazie per aver condiviso questa opzione – akrun

+0

e se dovessimo tagliare all'indietro? –

3

Il pacchetto stringr è grande:

require(stringr) 

df <- data.frame(col1 = c("AHG", "ALK", "OPH", "BCZ", "LKH", "QRQ", "AAA", "VYY")) 

str_sub(df$col1, 1, 1) 

[1] "A" "A" "O" "B" "L" "Q" "A" "V" 
+2

Perché hai bisogno di un pacchetto qui? La sintassi è esattamente la stessa della funzione di base 'substr'. – Roland

1

Quello che vi serve è la funzione substring:

df$col1 <- substr(df$col1, 1, 1) 
1

Sono d'accordo con Robin. utilizzando il substr o la funzione substring eseguirà direttamente il trucco senza dover installare alcun pacchetto.

df$col1 <- substr(df$col1, 1, 1) 

o df $ col1 < - sottostringa (df $ col1,1,1)

uso della sintassi substr (vettore di destinazione, avviare luogo, smettere di posto)