R: Как выбрать другой столбец для каждой строки кадра данных? - PullRequest
0 голосов
/ 21 мая 2019

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

library(plyr)
set.seed(12345)
df1 <- mdply(data.frame(mean=c(10, 15, 12, 24)), rnorm, n = 5, sd = 1)
df1

Я хочу, чтобы векторизованное решение (надеюсь) выбрало один столбец от V1 до V5 для каждой строки. Весами для выборки являются значения в каждой ячейке от V1 до V5 для рассматриваемой строки. Фактический фрейм данных может содержать пару миллионов строк. Пример вывода показан ниже.

f_col <- c(10,15,12,24)
sampled_column <- c("V3", "V1", "V5", "V5")

output_df1 <- data.frame("mean" = f_col, "result" = sampled_column)
output_df1

1 Ответ

1 голос
/ 21 мая 2019

В выборка вы можете использовать prob для взвешивания вероятности вашей выборки.Чтобы сделать это для каждой строки, вы можете использовать apply .

output_df1 <- data.frame("mean"=df1$mean, "result"=apply(df1[,-1], 1, function(x) {sample(names(x), 1, prob=x)}))
...