2016-08-13 69 views
0

我有一个庞大的数据集,我有一个名为season的列。有四个季节,即冬季,春季,夏季和秋季。在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

Try:th2 <-subset(secondphase,Season ==“Winter”| Season ==“Autumn”)其中|意味着逻辑或 – Dave2e

+0

阅读本文(http://adv-r.had.co.nz/Subsetting.html)。 –

+0

您刚才编辑的所有格式都被破坏了......我将其回滚,但是如果您需要帮助,请告诉我。我认为你试图自己做代码块格式化,但你使用了错误的刻度标记类型。此外,这不适用于表格等多行代码 - 您必须使用代码块功能。 –

回答

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%>%过滤器(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) 

做这项工作。