2015-03-11 17 views
5

Tôi muốn rút ngắn giá trị của một cột của data.frame tôi. Ngay bây giờ, mỗi giá trị bao gồm nhiều chữ cái, chẳng hạn nhưR: Làm thế nào để rút ngắn giá trị khung dữ liệu để ký tự đầu tiên

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

những gì tôi cần chỉ là chữ cái đầu tiên:

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

Tôi đã đọc các mục khác mà đề nghị sử dụng gsub, stri_replace_all_charclass, hoặc strsplit . Nhưng tôi sợ tôi cần giúp đỡ để thực hiện điều này.

+1

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

+2

' strtrim (x, chiều rộng) ' – rmuc8

Trả lời

6

Bạn có thể sử dụng strtrim

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

Tôi không biết về chức năng này. Tôi sử dụng một hàm tương tự 'str_trim' từ' stringr' để loại bỏ khoảng trắng. Cảm ơn bạn đã chia sẻ tùy chọn này – akrun

+0

nếu chúng tôi phải cắt lùi? –

3

Gói stringr là rất tốt:

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

Tại sao bạn cần một gói ở đây? Cú pháp chính xác giống với hàm cơ sở 'substr'. – Roland

1

Những gì bạn cần là hàm substring:

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

Tôi đồng ý với Robin. sử dụng hàm nền hoặc chuỗi con sẽ trực tiếp thực hiện thủ thuật mà không phải cài đặt bất kỳ gói nào.

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

hoặc df $ col1 < - substring (df $ col1,1,1)

sử dụng cú pháp substr (vector mục tiêu, bắt đầu diễn ra, dừng lại nơi)

Các vấn đề liên quan