Р: Как использовать построчное применение с отдельными столбцами в качестве входных переменных? - PullRequest
0 голосов
/ 24 февраля 2020

Я создаю список со всеми уникальными комбинациями двух столбцов в data.table.

На основе всех уникальных комбинаций в этом списке я хочу взять образцы из data.table.

Я уже написал для этого функцию и знаю, что могу использовать for-l oop или foreach-l oop. Как можно использовать следующую функцию с «apply» или одним из ее вариантов?

Большое спасибо: -)

MWE:

dt <- data.table(filename = c("a", "b", "c", "c", "a"), class = c(1,2,1,1,4), var = c(1,2,3,4,5))
unique_combinations <- unique(dt[, c("filename", "class")])

take_samples <- function(dt, filename, class, n) {
  dt %>%
    .[filename==filename & class==class] %>%
    sample_n(size=n, replace = FALSE)

  #TBD: append result to other data.table
}

# How to do the following call automatically for every unique combination using apply?
take_samples(dt, unique_combinations$filename[0], unique_combinations$class[0], 1)

1 Ответ

1 голос
/ 24 февраля 2020

Я думаю, вам нужно сгруппировать:

n <- 1
dt[,.SD[sample(.N, size = n, replace = T)], .(filename, class)]

Пояснение

  • Группировка по .(filename, class) займет уникальную комбинацию двух столбцов.
  • .SD содержит сгруппированный фрейм данных.

Вот выход выглядит так:

   filename class var
1:        a     1   1
2:        b     2   2
3:        c     1   4
4:        a     4   5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...