2016-04-12 24 views
24

Làm cách nào để xóa các phần tử đầu tiên khỏi biến, đặc biệt nếu biến này có ký tự đặc biệt. Ví dụ, tôi có cột sau:Trích xuất năm từ ngày

Date 
01/01/2009 
01/01/2010 
01/01/2011 
01/01/2012 

tôi cần phải có một cột mới như sau:

Date 
2009 
2010 
2011 
2012 
+9

Convert to 'ngày' lớp và sử dụng 'format' để trích xuất các 'năm' – akrun

+5

hoặc' gsub ("* /", "", df $ ngày) ' – mtoto

+2

hoặc' substr (as.character (....), 7, 10) ' – jogo

Trả lời

7

nếu tất cả các ngày của bạn là cùng một chiều rộng, bạn có thể đặt số ngày trong một vector và sử dụng chuỗi

Date 
a <- c("01/01/2009", "01/01/2010" , "01/01/2011") 
substring(a,7,10) #This takes string and only keeps the characters beginning in position 7 to position 10 

đầu ra

[1] "2009" "2010" "2011" 
64

Như đã thảo luận trong các ý kiến, điều này có thể đạt được bằng cách chuyển đổi mục sang định dạng Date và giải nén năm, ví dụ như thế này:

format(as.Date(df1$Date, format="%d/%m/%Y"),"%Y") 
+0

Hadley và Lubridate dễ dàng hơn –

+0

Tại sao địa ngục lại hoạt động? Nếu tôi nhìn vào tài liệu của 'format()', không có gì nói về đối số thứ hai mà bạn cung cấp. Làm thế nào tôi nên hiểu điều này? – scarface

+0

Từ định dạng '? Format':" là một hàm ** chung ** Ngoài các phương pháp được mô tả ở đây, còn có các phương thức cho ngày tháng (** xem format.Date **) ". Từ phương thức '? Format.Date':" ## S3 cho định dạng lớp 'Ngày' (x, ...) [ở đó ... \t biểu thị] các đối số khác được chuyển từ hoặc sang các phương thức khác, ** bao gồm định dạng cho các phương thức as.character và as.Date **. " Xem thêm ví dụ đầu tiên trong '? Format.Date'. – RHertel

1

Đầu chuyển đổi đó vào định dạng ngày tháng bằng cách sử dụng ngày < -c ("01/01/2009", "01/01/2010", "01/01/2011", "01/01/2012")

năm (as.Date (date, "% d /% m /% Y ")) #it sẽ chỉ cung cấp cho các năm Hy vọng điều đó sẽ giúp ích cho bạn! :)

+3

Điều này sẽ chỉ hoạt động với 'thư viện (lubridate)' được cài đặt và tải mà tôi nghĩ. 'year()' không phải là hàm từ 'base'. –

+0

Có, chúng tôi phải tải bôi trơn để làm cho tính toán của chúng tôi dễ dàng như vậy. –

+0

Bạn nên đặt câu trả lời đó vào câu trả lời –

4

Bạn có thể trích xuất năm từ một đối tượng cập nhật bằng cách sử dụng chức năng năm kể từ gói lubridate.

library(lubridate) 

year("2016-12-08")

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