#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 отсутствует в подмножестве.
Надеюсь, это устраняет сомнения