Как сгенерировать выборочный набор данных временного ряда, содержащий несколько особей разной длины (строки)? - PullRequest
0 голосов
/ 19 февраля 2020

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

ID = rep(c("alp", "bet", "char", "delta", "echo"), times = c(1000,1200,1234,980,1300)) 

, в этом случае ID представляет каждого уникального индивида (я бы позже превратил это в фактор), и сколько раз каждый ID повторение будет представлять длину измерений для этого фактора. Затем мне нужно создать столбец с именем Time с последовательностями от 1: 1000, 1: 1200, 1: 1234, 1: 980 и 1: 1300 (для представления длины измерений для каждого человека). Наконец, мне нужно сгенерировать 5 столбцов случайных чисел для каждой из 5 переменных. Существует множество способов go создания этого набора данных, но какой из них наиболее практичен?

1 Ответ

1 голос
/ 19 февраля 2020

Вы можете сделать:

ID = c("alp", "bet", "char", "delta", "echo")
num = c(1000,1200,1234,980,1300)
df <- data.frame(ID = rep(ID, num), num = sequence(num))
df[paste0('rand', seq_along(ID))] <- rnorm(length(ID) * sum(num))

head(df)
#   ID num      rand1       rand2       rand3      rand4       rand5
#1 alp   1  0.1340386  0.95900538  0.84573154  0.7151784 -0.07921171
#2 alp   2  0.2210195  1.67105483 -1.26068288  0.9171749 -0.09736927
#3 alp   3  1.6408462  0.05601673 -0.35454240 -2.6609228  0.21615254
#4 alp   4 -0.2190504 -0.05198191 -0.07355602  1.1102771  0.88246516
#5 alp   5  0.1680654 -1.75323736 -1.16865142 -0.4849876  0.20559750
#6 alp   6  1.1683839  0.09932759 -0.63474826  0.2306168 -0.61643584

Я использовал rnorm здесь, вы можете использовать любой другой дистрибутив для генерации случайных чисел.

...