2015-03-11 22 views
5

Chciałbym skrócić wartości jednej kolumny mojego pliku data.frame. Teraz każda wartość składa się z wielu listów, takich jakR: Jak skrócić wartości ramek danych do pierwszego znaku?

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

co potrzebne jest tylko pierwsza litera:

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

Czytałem inne wpisy, które zalecane, aby użyć gsub, stri_replace_all_charclass lub strsplit . Ale obawiam się, że potrzebuję pomocy, aby to wdrożyć.

+1

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

+2

' strtrim (x, szerokość) ' – rmuc8

Odpowiedz

6

Można użyć strtrim

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

Nie wiedziałem o tej funkcji. Używam podobnej funkcji 'str_trim' z' stringr', aby usunąć białą przestrzeń. Dzięki za udostępnienie tej opcji – akrun

+0

co, jeśli musimy przyciąć wstecz? –

3

Pakiet stringr jest wielki:

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

Dlaczego potrzebujesz tutaj pakietu? Składnia jest dokładnie taka sama, jak w przypadku funkcji podstawowej 'substr'. – Roland

1

Co trzeba to funkcja podciąg:

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

zgadzam się z Robin. przy użyciu funkcji substr lub substring bezpośrednio załatwi sprawę bez konieczności instalowania jakiejkolwiek paczki.

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

lub df $ kol1 < - podciąg (df $ col1,1,1)

stosowanie składni substr (target wektor, zaczynają się, zatrzymać miejsce)