Я пытаюсь выяснить, как отбирать уникальные значения фактора (уникальный идентификатор) в кадре данных - с заменой - - и затем используйте эти (повторяющиеся) выборочные значения, чтобы получить индексы значений уникального идентификатора для выборки.Извлечение индексов кадра данных на основе выборок (с заменой) фактора
Конкретно, скажем, у меня есть набор данных (повторяющихся) букв и цифр. Я хочу выбрать уникальные значения букв, а затем вернуть индексы фрейма данных, соответствующие буквам, которые я выбрал.
set.seed(1)
df = data.frame(l = rep(letters,2), v = 1:52)
sampvec <- sample(letters, 10, replace = TRUE)
length(unique(sampvec))#Fewer than 10 unique values
idx <- which(df$l %in% sampvec)
length(idx) #there should be 20, but there are 18, because one of the letters is duplicated
Это тривиально, чтобы сделать с for
цикла, но будет слишком медленным, с реальными данными:
idx <- c()
for (i in 1:length(sampvec)){
idx <- append(idx, which(df$l %in% sampvec[i]))
}
Любой векторизованного способ сделать это?
@Jota Если буква "А" пройдены дважды, я хочу, индексы '[1,27]' дважды появляется в 'idx' –
@Henrik очень умное использование' merge'! Я думаю, что это работает. Сделайте это ответом, если вы хотите, чтобы некоторые пункты –
вы проверили, работает ли ниже? можете ли вы также показать, что находится в вашем sampvec? – mtoto