Как удалить конкретную запись одного кадра данных в соответствии со значениями в другом кадре данных в R - PullRequest
0 голосов
/ 01 марта 2019

У меня есть два кадра данных (dat1 & dat2).Некоторые записи в dat2 необходимо удалить, если var1 в dat1 отрицательно.Я использую следующие коды, но думаю, что они не самые лучшие, потому что я использую дополнительный временный фрейм данных tmp.Можем ли мы найти лучший метод?

library(dplyr)

Date1 <- c("1999-12-17", "2005-1-5", "2003-11-2", "2005-6-12", "2005-8-9")
Date1 <- as.POSIXct(Date1, tz = "UTC")

Date2 <- c("2005-1-5", "2005-6-12", "2005-8-9")
Date2 <- as.POSIXct(Date2, tz = "UTC")

var1 <- c(-3, -10, 9, 5, 8)
var2 <- c(0.2, 0.6, 0.15)

dat1 <- data.frame(Date1, var1)
dat2 <- data.frame(Date2, var2)

#Below is what I did
tmp <- inner_join(dat1, dat2, by = c("Date1" = "Date2"))
tmp <- tmp[-tmp$var1 < 0, ]

dat2 <- tmp[, c(1,3)] 

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Учитывая, что вы уже используете dplyr, почему бы не использовать трубы, отфильтровать и выбрать как таковой

library(dplyr)
dat2 %>%
  left_join(dat1, by = c("Date2" = "Date1")) %>%
  filter(var1 >= 0) %>% 
  select(-var1)
0 голосов
/ 01 марта 2019

Примерно так должно работать:

dat2 %>%
  left_join(dat1, by = c("Date2" = "Date1")) %>%
  filter(var1 > 0) %>%
  mutate(var1 = NULL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...