Сохранение строк, которые удовлетворяют условиям, зависящим от других столбцов, с использованием функции coldate в R - PullRequest
1 голос
/ 10 января 2020

У меня есть набор данных в R, называемый BvD7. Это фрейм данных, который включает столбцы с заголовками «ID» (индивидуальный идентификатор), «Birth_Date», «OlderBrothers» (количество старших братьев) и «OlderBrotherDate» (дата, в которую было записано количество старших братьев человека ). Каждая строка - это событие, происходящее с конкретным человеком.

Меня интересует количество братьев, которое есть у человека при рождении, поэтому я хотел бы вести учет только тех OlderBrothers, где OlderBrother_Date максимально приближен к дате рождения.

Я пытался следующее:

which(BvD7$Birth_Date-coldate) == min(BvD7$OlderBrothers_Date-coldate)

Но я получил сообщение:

Error in which(BvD7$Birth_Date - coldate) : object 'coldate' not found

Кто-нибудь знает, что я должен сделать, чтобы получить столбец, который отображает количество старших братьев только в ближайшую возможную дату к дате рождения?

1 Ответ

0 голосов
/ 10 января 2020

Я задал несколько вопросов в своем комментарии, но тем временем, вот воспроизводимый пример, который добавляет столбец, показывающий количество старших братьев, которое есть в наблюдении, если число старших братьев подсчитывается на дату после дата рождения наблюдения, а NA нет. Возможно, вы сможете изменить этот код, чтобы приблизиться к тому, что вы на самом деле хотите.

library(dplyr)

set.seed(12345)

id <- seq(1:20)
birth_date <- sample(seq(as.Date('2010/01/01'), as.Date('2010/12/31'), by="day"), 20)
older_brothers <- sample(x = 1:4, size = 20, replace = TRUE)
older_brothers_counting_date <- sample(seq(as.Date('2009/01/01'), as.Date('2011/12/31'), by="day"), 20)

df <- data.frame(id, birth_date, older_brothers, older_brothers_counting_date)

df %>% 
    mutate(older_brothers_at_birth_date = ifelse(older_brothers_counting_date > birth_date, older_brothers, NA))

# the line above returns this:

   id birth_date older_brothers older_brothers_counting_date older_brothers_at_birth_date
1   1 2010-05-22              1                   2010-09-27                            1
2   2 2010-02-20              4                   2010-07-26                            4
3   3 2010-07-27              4                   2011-03-11                            4
4   4 2010-08-06              4                   2009-02-05                           NA
5   5 2010-08-08              2                   2011-08-29                            2
6   6 2010-06-01              4                   2009-06-15                           NA
7   7 2010-11-10              3                   2011-06-20                            3
8   8 2010-04-03              1                   2010-12-24                            1
9   9 2010-03-16              2                   2010-11-08                            2
10 10 2010-12-18              1                   2010-07-24                           NA
11 11 2010-08-04              4                   2010-03-27                           NA
12 12 2010-09-15              4                   2011-12-24                            4
13 13 2010-03-27              2                   2009-01-13                           NA
14 14 2010-12-23              3                   2011-01-05                            3
15 15 2010-02-07              4                   2010-03-09                            4
16 16 2010-04-13              4                   2010-08-09                            4
17 17 2010-09-23              2                   2009-02-25                           NA
18 18 2010-02-09              4                   2009-12-29                           NA
19 19 2010-10-21              2                   2010-11-06                            2
20 20 2010-10-13              4                   2011-08-05                            4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...