2016-08-13 2 views
0

У меня есть огромный набор данных, и у меня есть столбец, называемый сезоном. Есть 4 сезона, то есть зима, весна, лето и осень.Подмножество двух факторов в R

Region Year Male Female Area DATE Day Month Season 
WEST 1996 0 1 4 06-04-96 Saturday April Spring 
EAST 1996 0 1 16 29-06-96 Saturday June Summer 
WEST 1996 0 1 4 19-10-96 Saturday October Winter 
WEST 1996 0 1 4 20-10-96 Sunday October Winter 
EAST 1996 0 1 16 01-11-96 Friday November Winter 
EAST 1996 0 1 16 11-11-96 Monday November Winter 
WEST 1996 0 1 4 19-11-96 Tuesday November Winter 
WEST 1996 0 1 4 28-11-96 Thursday November Winter 
WEST 1996 0 1 4 10-12-96 Tuesday December Winter 
WEST 1997 0 1 4 17-01-97 Friday January Winter 
WEST 1997 0 1 4 28-03-97 Friday March Spring 

Поэтому я пытаюсь создать подмножество, где я хочу, чтобы R показывал мне записи с сезоном, как зимой и осенью.

Я создал подмножество первой части, которую я хочу.

secondphase<-subset(eb1, Area>16) 

сейчас из этого подмножества, я хочу, где сезон зима и осень.

Я попробовал эти codes-

th2<-subset(secondphase, Season== "Winter") 
th3<-subset(secondphase, Season=="Autumn") 

Теперь есть способ объединить эти два подмножества? или создать подмножество, где я могу выбрать условия, в которых я хочу область> 16, сезон должен быть зимой и осенью.

Спасибо за помощь.

+1

Попробуйте: th2 <-subset (secondphase, Season == «Winter» | Season == «Осень»), где | означает логический ИЛИ – Dave2e

+0

Прочтите это (http://adv-r.had.co.nz/Subsetting.html). –

+0

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

ответ

0

Метод 1

my_subset <- eb1[eb1$Season %in% c("Winter", "Autumn") & eb1$Area > 16,] 

Метод 2

th2 <- subset(secondphase, Season== "Winter") 
th3 <- subset(secondphase, Season=="Autumn") 
final <- rbind(th2, th3) 

Метод 3

final <-subset(eb1[eb1$Area > 16,], Season== "Winter" | Season=="Autumn") 
+1

Большое спасибо, вы amazin ! –

+0

@SrivatsChari Счастливые помочь! –

+0

У меня была другая проблема с моделью линейной регрессии, если вы можете мне помочь. @ Hack-R –

1

Вы можете также использовать dplyr пакет остроумие ч функция фильтра

filter(secondphase, grepl("Winter|Autumn", Season)) 
+0

Удалено. Thx для указания – johnsinclair

+1

Ваш синтаксис не совсем прав; вы не можете использовать '|' внутри строки вне шаблонов регулярных выражений, или '==' будет пытаться сопоставить ее буквально. Вам нужен фильтр 'eb1%>% (Area> 16, Season == 'Winter' | Season == 'Autumn')' или 'eb1%>% filter (Area> 16, Season% in% c ('Winter' , 'Осень')) ' – alistaire

0

С data.table подходе

library("data.table") 
DT<-data.table(eb1) 
subsetDT<-subset(DT, Season %in% c("Autmn","Winter") & Area > 16) 

делает работу.

Смежные вопросы