Образец случайного столбца для каждой строки в Data.Frame - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть data.frame, который имеет значения временного ряда для a, b и c. Я хотел бы построить случайный временной ряд, который случайным образом выбирает значение столбцов для каждой строки (т.е. дату).

Так, например, если у нас есть следующее df:

df <- data.frame(date = c(as.Date("2018-08-01"),as.Date("2018-09-01"), as.Date("2018-10-01")), a = c(1.0, 1.5, 1.8), b=c(-1.0, -2.0, 3.0), c=c(-2.0, -15.0, 1.7))

 #> df
 #           date   a  b     c
 #   1 2018-08-01 1.0 -1  -2.0
 #   2 2018-09-01 1.5 -2 -15.0
 #   3 2018-10-01 1.8  3   1.7

Возможная случайная выборка будет выглядеть (в этом случае выбрано a для первого месяца, b для второго и c для третьего).

df.random.sample <- data.frame(date = c(as.Date("2018-08-01"),as.Date("2018-09-01"), as.Date("2018-10-01")), random = c(1.0, -2.0, 1.7))

#> df.random.sample
#        date random
#1 2018-08-01    1.0
#2 2018-09-01   -2.0
#3 2018-10-01    1.7

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

1 Ответ

0 голосов
/ 01 ноября 2018

Если мы хотим произвести выборку по строке, используйте apply

cbind(df[1], random = apply(df[-1], 1, sample, size = 1))

Или используйте векторизованный подход с row/column индексированием

cbind(df[1], random = df[-1][cbind(seq_len(nrow(df)), sample(2:ncol(df))-1)])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...