2016-09-09 8 views
-5

Скажем, у меня есть набор данных с 3 столбцами, A, B и C, которые содержат даты для большого количества строк. Как создать подмножество, которое опускает строки, где дата в C не находится в диапазоне дат в A и B?Подмножество R на основе диапазона дат

+1

Привет, Джейсон, Добро пожаловать в StackOverflow. Пожалуйста, взгляните на [это] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) и постарайтесь предоставить нам минимальный воспроизводимый пример. –

+0

Кроме того, этот вид операции называется «подмножество» - это должно помочь вам легко ответить Google. Если вы не найдете ничего (маловероятно), * затем * задайте здесь вопрос (и предоставьте нам некоторые данные и то, что вы пробовали до сих пор). – jakub

+0

Возможный дубликат [R - проверить, содержит ли строка даты в определенном диапазоне дат] (http://stackoverflow.com/questions/31716187/r-check-if-string-contains-dates-within-specific-date-range) – Sotos

ответ

0

Вы спрашиваете что-то вроде следующего?

Допустим, ваш первоначальный dataframe является ДФ, которая заключается в следующем:

df 
      A   B   C 
1 2016-02-16 2016-03-21 2016-01-01 
2 2016-07-07 2016-06-17 2016-01-31 
3 2016-05-19 2016-09-10 2016-03-01 
4 2016-01-14 2016-08-21 2016-04-01 
5 2016-09-02 2016-06-15 2016-05-01 
6 2016-05-09 2016-07-17 2016-05-31 
7 2016-06-13 2016-06-23 2016-07-01 
8 2016-09-17 2016-03-11 2016-07-31 
9 2016-03-09 2016-05-13 2016-08-30 
10 2016-01-20 2016-09-01 2016-09-30 

Теперь, если вы выполните следующие операции подмножество, то мы получим следующее dataframe подмножество:

df.sub <- df[apply(df, 1, function(x) (x[3] < min(x[1], x[2])) | 
             (x[3] > max(x[1], x[2]))),] 
df.sub 
      A   B   C 
1 2016-02-16 2016-03-21 2016-01-01 
2 2016-07-07 2016-06-17 2016-01-31 
3 2016-05-19 2016-09-10 2016-03-01 
5 2016-09-02 2016-06-15 2016-05-01 
7 2016-06-13 2016-06-23 2016-07-01 
9 2016-03-09 2016-05-13 2016-08-30 
10 2016-01-20 2016-09-01 2016-09-30 

Надеюсь, поможет.

Смежные вопросы