Почему подмножество не будет работать в R?
У меня есть фрейм данных 'vissim', который имеет следующую структуру:
> str(vissim)
'data.frame': 480 obs. of 12 variables:
$ Measur. : int 1 2 3 4 5 6 7 8 9 10 ...
$ from : int 100 100 100 100 100 100 100 100 100 100 ...
$ to : int 130 130 130 130 130 130 130 130 130 130 ...
$ Occup..Rate.Trucks : num 2.9 NA NA NA NA 1 NA NA NA NA ...
$ Speed.Mean.Trucks : num 51.4 NA NA NA NA 50.7 NA NA NA NA ...
$ Number.Veh.Trucks : int 2 NA NA NA NA 1 NA NA NA NA ...
$ Occup..Rate.Motorcycles: num NA 0.7 NA NA NA NA NA 0.4 NA NA ...
$ Speed.Mean.Motorcycles : num NA 57.7 NA NA NA NA NA 64.2 NA NA ...
$ Number.Veh.Motorcycles : int NA 2 NA NA NA NA NA 1 NA NA ...
$ Occup..Rate.Car : num 6.8 3.3 NA NA NA 5.6 2.3 1.2 0.4 0.6 ...
$ Speed.Mean.Car : num 58.2 57.5 NA NA NA 60 63.5 64.5 60 55.6 ...
$ Number.Veh.Car : int 12 6 NA NA NA 11 5 2 1 1 ...
Когда я поднабор это, используя "Измерение". переменная наряду со следующими критериями, она отлично работает:
> updatav <- subset(vissim, Measur.==c(1,2,3,4,5))
Но когда я снова делаю подмножество, используя ту же самую переменную, но другие критерии, это дает следующую ошибку:
> bwdatav <- subset(vissim, Measur.==c(6,7,8,9,10,11))
> head(bwdatav)
[1] Measur. from to Occup..Rate.Trucks
[5] Speed.Mean.Trucks Number.Veh.Trucks Occup..Rate.Motorcycles Speed.Mean.Motorcycles
[9] Number.Veh.Motorcycles Occup..Rate.Car Speed.Mean.Car Number.Veh.Car
<0 rows> (or 0-length row.names)
Не знаю, почему он говорит "0 строк", когда во фрейме данных "vissim" явно есть строки для "Measur". 6-11. Есть идеи?
1 ответ
Решение
Ты используешь ==
когда вы должны использовать %in%
:
updatav <- subset(vissim, Measur. %in% c(1,2,3,4,5))
(Это действительно не имеет ничего общего с подмножеством.)
==
подразумевает равенство и ничто в "Мере". столбец будет равен всем этим значениям в этом порядке.