Генерация случайных чисел для групп R - PullRequest
1 голос
/ 23 марта 2020

Я хочу создать одно и то же случайное число для групп. К сожалению, мой следующий код генерирует случайное число для каждой строки.

randomised <- data %>%
  group_by(`ID`)%>%
  mutate(random = sample(1:100,n(), replace = TRUE))

Любая помощь приветствуется.

Ответы [ 3 ]

2 голосов
/ 23 марта 2020

Вы должны просто выбрать 1 значение из sample, которое будет переработано для всех значений в группе.

library(dplyr)
data %>% group_by(ID)%>% mutate(random = sample(100,1))

Или в базе R:

data$random <- with(data, ave(seq_along(ID), ID,FUN = function(x) sample(100, 1)))
1 голос
/ 23 марта 2020

Не уверен, зачем нам это нужно, если мы пытаемся анонимизировать идентификаторы ( cyl столбец в mtcars пример данных), тогда это довольно случайно для меня:

library(dplyr)

mtcars %>% 
  mutate(random = as.integer(as.factor(cyl)))
1 голос
/ 23 марта 2020

Опция в data.table:

setDT(data)[, random := sample(100, 1), ID]
...