مجموعة فرعية بيانات. الإطار مع شروط متعددة

StackOverflow https://stackoverflow.com/questions/3051279

  •  27-09-2019
  •  | 
  •  

سؤال

لنفترض أن بياناتي تبدو هكذا:

2372  Kansas KS2000111 HUMBOLDT, CITY OF    ATRAZINE    1.3 05/07/2006
9104  Kansas KS2000111 HUMBOLDT, CITY OF    ATRAZINE   0.34 07/23/2006
9212  Kansas KS2000111 HUMBOLDT, CITY OF    ATRAZINE   0.33 02/11/2007
2094  Kansas KS2000111 HUMBOLDT, CITY OF    ATRAZINE    1.4 05/06/2007
16763 Kansas KS2000111 HUMBOLDT, CITY OF    ATRAZINE   0.61 05/11/2009
1076  Kansas KS2000111 HUMBOLDT, CITY OF METOLACHLOR   0.48 05/12/2002
1077  Kansas KS2000111 HUMBOLDT, CITY OF METOLACHLOR    0.3 05/07/2006

أريد أن أكون قادرًا على الفرع من خلال التحليل ومباراة جزئية في التاريخ (أي أريد فقط العام). لقد حاولت هذا ، لكنني أعلم أنه ليس صحيحًا تمامًا.

 data[data$Analyte=="ATRAZINE" & grep("2006",as.character(data$Date)),]

أي اقتراحات؟

هل كانت مفيدة؟

المحلول

بالنسبة لهذه المشكلة ، سأذهب مع النهج في إجابة قائمة انتظار المتدربين لاستخراج السنة من التاريخ بدلاً من القيام بمطابقة السلسلة العامة. أود أن أقترح:

data[data$Analyte =="ATRAZINE"
     & as.POSIXlt(data$Date, format="%m/%d/%Y")$year == 106]

ولكن إذا كان عليك حقًا القيام بمطابقة regexp ، فيمكنك استخدامها grepl الذي يعيد ناقل منطقي بدلاً من grep الذي يعيد ناقل المؤشرات.

data[data$Analyte=="ATRAZINE" & grepl("2006",as.character(data$Date)),]

نصائح أخرى

طريقة واحدة لاستخدام Date Distalals:

data[data$Analyte =="ATRAZINE"
     & (data$Date >= '2006-01-01' & data$Date < '2007-01-01')]

طريقة أخرى باستخدام format

data[data$Analyte =="ATRAZINE"
     & format(data$Date, "%Y") == '2006']

أدرك أن هذا السؤال قد تم طرحه قبل بضع سنوات ، ونأمل أن يساعد شخص ما في المستقبل.

تستخدم dplyr للوقوع الفرعي باستخدام شروط متعددة ، والتحقق من السنة بعد التحويل إلى نوع التاريخ

library(dplyr)

data %>% filter( Analyte=="ATRAZINE" & format(as.Date(Date,format = "%m/%d/%Y"),"%Y") == "2006") 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top