как сделать выборку из нескольких списков (номеров? - PullRequest
0 голосов
/ 30 октября 2018

Я хотел бы попробовать, скажем, возраст 100 человек старше 65 лет, и вероятности для возрастных групп следующие:

65-74<- 0.56
75-84<- 0.30
85<- 0.24

Я знаю существование функции семпла, и я попробовал это следующим образом, но, к сожалению, это не сработало

list65_74<-range(65,74)
list75_84<-range(75,84)
list85<-range(85,100)

age<-sample(c(list65_74,list75_84,list85),size=10,replace=TRUE,prob =c(0.56,0.30,0.24 ))I get the following error

Я получил следующую ошибку

 Error in sample.int(length(x), size, replace, prob) : 
      incorrect number of probabilities

Так что мне было интересно, как правильно выбрать несколько списков. Заранее большое спасибо!

1 Ответ

0 голосов
/ 30 октября 2018

Сначала давайте назовем эти три объекта группы , поскольку они не используют функцию list.

То, как вы их определяете, может быть хорошо, но это несколько более прямолинейно, например, 65:74, а не c(65, 74). Итак, в конечном итоге я поместил три группы в следующем списке:

groups <- list(group65_74 = 65:74, group75_84 = 75:84, group85 = 85:100)

Теперь первой проблемой при использовании sample было значение аргумента x, которое равно

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

Между тем, вы x были просто

c(list65_74, list75_84, list85)
# [1]  65  74  75  84  85 100

Наконец, значение prob неуместно. Вы вводите 3 числа в вектор из 6 кандидатов для отбора образцов. Не правильно звучит. Вместо этого вам нужно назначить соответствующую вероятность для каждого возраста из каждой группы, как в

rep(c(0.56, 0.30, 0.24), times = sapply(groups, length))

Так что результат

sample(unlist(groups), size = 10, replace = TRUE, 
       prob = rep(c(0.56, 0.30, 0.24), times = sapply(groups, length)))
# [1] 82 72 69 74 72 72 69 70 74 70
...