Понижение с использованием мурлыканья. Уникальный идентификатор - PullRequest
1 голос
/ 20 февраля 2020

Я хотел использовать для группировки по уникальному идентификатору, а затем downSample факторную переменную с использованием пакета . Вот код ниже:

out <- train %>% select(stream, HUC12) %>% 
  na.omit() %>% group_by(HUC12) %>% 
  nest %>% mutate(prop = map(data, ~downSample(.x, factor('stream'))))

Любая помощь будет принята с благодарностью. Вот некоторые примеры данных.

train <- data.frame(stream = factor(sample(x= 0:1, size = 100, replace = TRUE, 
                    prob = c(0.25,.75))), HUC12 = rep(c("a","b","c","d")))

1 Ответ

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

Генерация данных:

set.seed(100)
train <- data.frame(stream = factor(sample(x= 0:1, size = 100, replace = TRUE, 
                    prob = c(0.25,.75))), HUC12 = rep(c("a","b","c","d")))

Попробуйте что-то подобное, потому что ваш downSample возвращает data.frame, мы можем использовать функцию do в dplyr для выполнения понижающей выборки.

library(dplyr)
down_train <- train %>% select(stream, HUC12) %>%  
na.omit() %>% group_by(HUC12) %>%  do(downSample(.,.$stream))

Мы можем проверить:

down_train %>% count(HUC12,stream)

# A tibble: 8 x 3
# Groups:   HUC12 [4]
  HUC12 stream     n
  <fct> <fct>  <int>
1 a     0          1
2 a     1          1
3 b     0          4
4 b     1          4
5 c     0         11
6 c     1         11
7 d     0          8
8 d     1          8

И в исходных данных:

train %>% count(HUC12,stream)
# A tibble: 8 x 3
  HUC12 stream     n
  <fct> <fct>  <int>
1 a     0          1
2 a     1         24
3 b     0          4
4 b     1         21
5 c     0         11
6 c     1         14
7 d     0          8
8 d     1         17
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...