Отфильтруйте кадр данных по столбцу, если условие выполняется в другом столбце с помощью Dplyr R - PullRequest
0 голосов
/ 29 января 2020

Я нигде не смог найти ответ на свой вопрос. У меня есть R-фрейм данных, и я хотел бы отфильтровать по значению столбца, если условие выполняется в другом столбце, иначе значение не должно быть отфильтровано, и в идеале я бы сделал это с помощью Dplyr.

В случае моего фрейма данных я хотел бы отфильтровать эти значения (третий столбец) меньше 1 только в тех случаях, когда тип является "реальным".

# My Dataframe 
dat = data.frame(dte = c("2011-01-01","2011-02-01","2011-03-01","2011-04-01","2011-05-01",
                          "2011-01-01","2011-02-01","2011-03-01"),
                  type = c("real","real","real","real","real","ts","ts","ts"),
                  value=rnorm(8))

# Desired output

         dte type      value
1 2011-01-01 real -1.0852682
3 2011-03-01 real -0.6664113
4 2011-04-01 real -0.7394061
5 2011-05-01 real -2.3819627
6 2011-01-01   ts -1.2122576
7 2011-02-01   ts  1.0923944
8 2011-03-01   ts -2.0373596

Я пытался это, но это не сработало вообще.


dat1 <- dat %>% filter(if(type == "real") value < 1 else value == value )

Кто-нибудь может дать мне любую идею?

Большое спасибо!

Рэйчел

1 Ответ

1 голос
/ 29 января 2020

Вы можете использовать:

library(dplyr)
dat %>% filter(type == "real" & value < 1 | type != "real")

Мы можем использовать то же условие и в базе R subset

subset(dat, type == "real" & value < 1 | type != "real")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...