Добавить серию в виде столбца в R - PullRequest
0 голосов
/ 16 февраля 2020

Мне нужно расширить набор данных и объединить с сериями времени от 1 часа до 600 часов

ID   Age   Weight
1     25     150
2     30     140 
3     28     170

до следующего формата [точки представляют непрерывный счет от 4 до 599; с одинаковыми значениями ID, возраста и веса]

ID   Age   Weight  Time
1     25     150    1
1     25     150    2
1     25     150    3
1     25     150    4
..    ..     ...   .. 
1     25     150   599
1     25     150   600
2     30     140    1
2     30     140    2
2     30     140    3 
2     30     140    4
..    ..     ...    ..  
2     30     140    599
2     30     140    600
3     28     170     1
3     28     170     2
3     28     170     3
3     28     170     4
..    ..     ...    ..
3     28     170     599
3     28     170     600

1 Ответ

2 голосов
/ 16 февраля 2020

Мы можем использовать complete из tidyr

library(dplyr)

df %>%
  mutate(Time = 1) %>%
  group_by(ID, Age, Weight) %>%
  tidyr::complete(Time = 1:600)

#      ID   Age Weight  Time
#   <int> <int>  <int> <dbl>
# 1     1    25    150     1
# 2     1    25    150     2
# 3     1    25    150     3
# 4     1    25    150     4
# 5     1    25    150     5
# 6     1    25    150     6
# 7     1    25    150     7
# 8     1    25    150     8
# 9     1    25    150     9
#10     1    25    150    10
# … with 1,790 more rows

Или в базе R, используя split и transform

do.call(rbind, lapply(split(df, df$ID), function(x) transform(x, Time = 1:600)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...