【问题标题】:Subsetting two factors in RR中的两个因子的子集
【发布时间】:2016-08-13 19:51:09
【问题描述】:

我有一个庞大的数据集,并且有一个名为 season 的列。有冬、春、夏、秋四个季节。

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)

现在从这个子集中,我想要季节是冬天和秋天的地方。

我试过这些代码-

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

现在有没有办法合并这两个子集?或者创建一个子集,我可以在其中选择我想要的条件 area>16,季节应该是冬季和秋季。

感谢您的帮助。

【问题讨论】:

  • 尝试:th2
  • 您刚刚进行的编辑破坏了所有格式...我将其退回,但如果您需要帮助,请告诉我。我认为您正在尝试自己进行代码块格式化,但您使用了错误类型的刻度线。这也不适用于像表格这样的多行代码——你必须使用代码块功能。
  • @Dave2e 或者跳过第一步直接做final &lt;-subset(eb1[eb1$Area &gt; 16,], Season== "Winter" | Season=="Autumn")

标签: r statistics


【解决方案1】:

你也可以使用带有过滤功能的 dplyr 包

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

【讨论】:

  • 你的语法不太对;您不能在正则表达式模式之外的字符串中使用|,否则== 将尝试逐字匹配它。您需要eb1 %&gt;% filter(Area &gt; 16, Season == 'Winter' | Season == 'Autumn')eb1 %&gt;% filter(Area &gt; 16, Season %in% c('Winter', 'Autumn'))
【解决方案2】:

方法一

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

方法二

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")

【讨论】:

  • 非常感谢,你太棒了!
  • @SrivatsChari 乐于助人!
  • 如果你能帮助我,我在线性回归模型方面遇到了另一个问题。 @Hack-R
  • @SrivatsChari 你为它打开了另一个问题吗?有什么问题?
  • 知道了!谢谢@Hack-R
【解决方案3】:

使用data.table 方法,

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

完成这项工作。

【讨论】:

    猜你喜欢
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多