Подмножество данных

#r #subset #sample #random-seed

#r #подмножество #пример #случайное начальное значение

Вопрос:

Можете ли вы помочь мне найти лучший способ сделать это в r-studio? Выберите 50% набора данных mtcars случайным образом без замены и назовите его mtcars 50.

Чтобы найти: из набора данных mtcars50 напишите команду для выбора только наблюдений с hp больше 150?

 subset(mtcars50, mtcars50$hp>150)
 

Я уже пытался выполнить следующее:

 sample_frac(mtcars, 0.50, replace = FALSE) 
#To select 50% of the mtcars dataset

mtcars50<-sample_frac(mtcars, 0.50, replace = FALSE) 
 

Я не уверен, правильно ли это, но я сделал это, чтобы назвать новый набор данных.

Но когда я запускаю приведенный ниже код, чтобы выбрать только наблюдения с hp больше 150 из набора данных mtcars50, некоторые переменные в его выходных данных не включены в набор данных mtcars50. Я предположил, что код, который я запустил, создал другое подмножество, и оттуда он выбрал наблюдения.

 subset(mtcars50, mtcars50$hp>150)
 

Извините, если это немного сбивает с толку. Но я надеюсь, что вы сможете помочь мне с моей проблемой. Большое вам спасибо.

 sample_frac(mtcars, 0.50, replace = FALSE)
mtcars50<-sample_frac(mtcars, 0.50, replace = FALSE)
mtcars50<-sample_frac(mtcars, 0.50, replace = FALSE)
 

введите описание изображения здесь

введите описание изображения здесь

Комментарии:

1. Не могли бы вы, пожалуйста, попытаться отредактировать свой пост, чтобы четко показать код, который вы запускаете (используя три последовательных возврата), какой результат вы получаете и на какой результат вы надеетесь? И, пожалуйста, не показывайте код или результаты вывода в виде изображений — если это, конечно, не изображение.

2. Мне неясно, в чем заключается ваш вопрос. В верхней части второго изображения кажется, что все перечисленные автомобили имеют мощность выше 150 л.с., и они представляют собой выборку из полного набора данных mtcars. Как вы ожидали, что результаты subset(mtcars50, mtcars50$hp>150) будут выглядеть?

3. «некоторые переменные в его выходных данных не включены в набор данных mtcars50» — какие переменные, по вашему мнению, отсутствуют? Я считаю имена строк 11 переменных во всех выходных данных, которые вы показываете. Общая ширина выходных данных отличается, потому что некоторые подмножества не имеют таких длинных имен строк, как другие.

4. Привет, добро пожаловать в SO! Я понял вашу проблему. На самом деле вы получаете разные результаты при выборке и при ее сохранении, потому что R каждый раз выбирал разные случайные начальные значения. Смотрите Мой ответ для объяснения

Ответ №1:

Редактировать

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

 
set.seed(1)
sample_frac(mtcars, 0.50, replace = FALSE) 

                  mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Pontiac Firebird 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
Hornet 4 Drive   21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Duster 360       14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Mazda RX4        21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag    21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
AMC Javelin      15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
Merc 280C        17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
Merc 450SLC      15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
Fiat 128         32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
Honda Civic      30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
Ford Pantera L   15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
Toyota Corona    21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
Merc 280         19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
Volvo 142E       21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
Toyota Corolla   33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
Ferrari Dino     19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6

# now filtering part

set.seed(1)

mtcars50<-sample_frac(mtcars, 0.50, replace = FALSE)

subset(mtcars50, mtcars50$hp>150)

                  mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Pontiac Firebird 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
Duster 360       14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 450SLC      15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
Ford Pantera L   15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
Ferrari Dino     19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
 

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

 > sample_frac(mtcars, 0.50, replace = FALSE) 
                    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Merc 230           22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
Cadillac Fleetwood 10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
Toyota Corona      21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
Hornet Sportabout  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Volvo 142E         21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
Pontiac Firebird   19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
Merc 450SLC        15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
Ford Pantera L     15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
Porsche 914-2      26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
Mazda RX4 Wag      21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Merc 280           19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
Merc 450SE         16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
Maserati Bora      15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
Mazda RX4          21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Datsun 710         22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Valiant            18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1


> mtcars50<-sample_frac(mtcars, 0.50, replace = FALSE)
> subset(mtcars50, mtcars50$hp>150)
                    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Cadillac Fleetwood 10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
Merc 450SE         16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
Ferrari Dino       19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
Pontiac Firebird   19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
Camaro Z28         13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
Duster 360         14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Maserati Bora      15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
 

Обратите внимание, что Hornet sportabout значение hp = 175 отсутствует в подмножестве.

Надеюсь, это устраняет сомнения