Р: Нарисуйте 100 случайных цен из каждого качества огранки в наборе данных алмазов? - PullRequest
0 голосов
/ 21 февраля 2019

Я использую набор данных по алмазам:

install.packages("ggplot2")
library(ggplot2)
data("diamonds")

, и мне нужно создать фрейм данных, который случайным образом выбирает 100 цен для каждого качества резки (удовлетворительное, хорошее, очень хорошее, премиум, идеальное), котороедаст мне 500 точек данных.У меня возникли некоторые проблемы с доставкой, и любая помощь будет принята с благодарностью!Вот формула, которую я попробовал, но я не могу понять, как включить все подмножества, которые попадают в «cut».

diamonds$price[ sample( diamonds$cut, size=100, replace=FALSE )]

Я также пытался использовать функцию агрегирования, но это, казалось, уводило меня еще дальше от того места, куда я должен был идти.Я уверен, что просто упускаю что-то довольно очевидное, но я очень новичок в этом, и я не могу ничего найти об этом в Интернете.Спасибо!

Благодаря Камилье я смог сделать это с:

 Test.1<-diamonds %>%
      group_by(cut) %>%
      sample_n(size = 100) %>%
      count(price)

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

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Не нужно усложнять, чем dplyr.dplyr::sample_n может работать с сгруппированным кадром данных, так что каждый набор из N выборок берется из одной из этих групп.

library(dplyr)
library(ggplot2)

diamonds %>%
  group_by(cut) %>%
  sample_n(size = 100)
#> # A tibble: 500 x 10
#> # Groups:   cut [5]
#>    carat cut   color clarity depth table price     x     y     z
#>    <dbl> <ord> <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
#>  1  0.7  Fair  D     SI2      65.6    55  2167  5.59  5.5   3.64
#>  2  1.01 Fair  E     SI1      64.8    58  4480  6.34  6.29  4.09
#>  3  0.7  Fair  G     VS1      65.2    57  2290  5.56  5.52  3.61
#>  4  0.7  Fair  F     I1       65.4    59   992  5.6   5.49  3.63
#>  5  1    Fair  G     SI1      63.1    59  4163  6.32  6.27  3.97
#>  6  2.01 Fair  E     SI2      62.1    66 14948  7.99  7.92  4.94
#>  7  0.7  Fair  G     VS1      56.2    65  2384  5.93  5.88  3.32
#>  8  0.7  Fair  I     VS1      60.2    66  2234  5.77  5.62  3.44
#>  9  0.7  Fair  G     VS2      66.5    57  2575  5.4   5.46  3.61
#> 10  1.13 Fair  F     VS1      64.5    55  7335  6.62  6.56  4.25
#> # … with 490 more rows

Для проверки:

diamonds %>%
  group_by(cut) %>%
  sample_n(size = 100) %>%
  count(cut)
#> # A tibble: 5 x 2
#> # Groups:   cut [5]
#>   cut           n
#>   <ord>     <int>
#> 1 Fair        100
#> 2 Good        100
#> 3 Very Good   100
#> 4 Premium     100
#> 5 Ideal       100

Создано в 2019-02-21 пакетом Представление (v0.2.1)

0 голосов
/ 21 февраля 2019

Вы можете сделать это, используя логику split-apply-Объединить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...