R - создание полного фрейма данных путем объединения из других фреймов данных - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь создать два новых столбца возраста людей и их возрастных групп (с 5-летним интервалом) с учетом даты их рождения из фрейма данных. Текущий фрейм данных Например:

Person      Date of Birth 
A             1/2/2000
B             3/2/1998
C             4/5/2008

Ожидаемый результат:

Person      Date of Birth     Age   Age-Group
A             1/2/2000        18    15-20
B             3/2/1990        28    25-30
C             4/5/2008        10    5-10

Каков наилучший способ сделать это наиболее эффективным способом для большого набора данных? Спасибо

1 Ответ

0 голосов
/ 28 июня 2018

Как то так? Кстати, я немного скорректировал возрастные группы, которые вы использовали в своем примере, поскольку использование 5-10 и 15-20 означало бы, что вы также будете использовать возрастную группу 11-14, что мне покажется странным.

df <- read.table(text = "
Person      DateofBirth 
A             1/2/2000
B             3/2/1998
C             4/5/2008", header = T)

library(lubridate)

df$age <- interval(as.Date(df$DateofBirth, "%d/%m/%Y"), Sys.Date()) %/% years(1)
df$agegroup <- cut(df$age, seq(5,30,5), c("5-10", "11-15", "16-20", "21-25", "25-30"))
df

  Person DateofBirth age agegroup
1      A    1/2/2000  18    16-20
2      B    3/2/1998  20    16-20
3      C    4/5/2008  10     5-10

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

df1 <- data.frame(age = 1:100)
df1$agegroup <- cut(df1$age, seq(0,100,5), paste0(seq(1,96, 5), "-", seq(5,100,5)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...