Хранение только определенных записей с условием - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть набор данных, который выглядит следующим образом:

set ID   v1        
A1  222  1.86543   
B1  222  2.98764   
A1  234  3.76543   
B1  234  4.87654  
A1  235  1.98766  
B1  235  6.98765   
A1  21   1.98764   
B1  21   7.7654    

Я пытаюсь сохранить только те записи, где разница между значениями v1 для A1 и B1 больше 2. Я новичок в Rи у меня нет твердого кода, который я пытался показать здесь.Может ли кто-нибудь, пожалуйста, помочь мне здесь?

Заранее спасибо.

извинения за изменения в вопросе здесь.Я представил данные неправильно здесь.Я редактировал это сейчас.

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

Похоже, кто-то уже достиг этого, но вы также можете использовать функцию abs, если разница может быть равна 2 в любом направлении.

library(tidyverse)

df <- tibble(
  set = c("A1", "B1", "A1", "B1"),
  ID = c(222, 222, 234, 234),
  v1 = c(1.86543, 2.98764, 3.76543, 4.87654),
  v2 = c(3.98765, 2.98764, 2.87643, 1.87653)
)

df %>% 
  filter(abs(v1 - v2) > 2)
0 голосов
/ 18 апреля 2019

Учитывая новый формат данных, вы можете использовать функцию spread

require(tidyverse) 

df %>% 
  spread(set, v1) %>% 
  filter(abs(A1-B1) > 2)

Результат:

   ID      A1      B1
1  21 1.98764 7.76540
2 235 1.98766 6.98765

Данные:

df <- read.table(text = "set ID   v1        
A1  222  1.86543   
           B1  222  2.98764   
           A1  234  3.76543   
           B1  234  4.87654  
           A1  235  1.98766  
           B1  235  6.98765   
           A1  21   1.98764   
           B1  21   7.7654 
           ", header = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...