我是新来的R和不能得到这个概念交手。 假设我有一个表中加载名为“地方”与3列说 - 城市,人口和夏季平均气温
说我要“过滤器” - 产生新的表对象,其中人口不足1万,夏季平均气温为大于70度。
在任何其他程序我已经使用这个会很容易,但已经做了一些研究,我自己的工作成更大的混乱。 鉴于R的目的,它这样做一定是很简单的东西是什么。
我将如何适用上述条件的表? 什么会的步骤是什么? 从我的理解,我不能轻易只选择表格标题基于他们的名字,这将是很好的(例如在城市<1,000,000)
我是新来的R和不能得到这个概念交手。 假设我有一个表中加载名为“地方”与3列说 - 城市,人口和夏季平均气温
说我要“过滤器” - 产生新的表对象,其中人口不足1万,夏季平均气温为大于70度。
在任何其他程序我已经使用这个会很容易,但已经做了一些研究,我自己的工作成更大的混乱。 鉴于R的目的,它这样做一定是很简单的东西是什么。
我将如何适用上述条件的表? 什么会的步骤是什么? 从我的理解,我不能轻易只选择表格标题基于他们的名字,这将是很好的(例如在城市<1,000,000)
给定一个数据帧“DFRM”与城市的名字在“城市”栏,在“人口”栏目的人口,并在“meanSummerT”列夏季平均气温您对集会议请求的联合要求得到满足与任何这些:
subset( dfrm, population < 1e6 & meanSummerT > 70)
dfrm[ which(dfrm$population < 1e6 & dfrm$meanSummerT > 70) , ]
dfrm[ which(dfrm[['population']] < 1e6 & dfrm[['meanSummerT']] > 70) , ]
如果你想满足这些标准,联合城市的不仅仅是名字那么这将工作:
subset( dfrm, population < 1e6 & meanSummerT > 70 , city)
dfrm[ which(dfrm$population < 1e6 & dfrm$meanSummerT > 70) , "city" ]
dfrm[ which(dfrm[['population']] < 1e6 & dfrm[['meanSummerT']] > 70) , "city" ]
需要注意的是列名不继“$”操作符的子集或报价,但他们在里面引用了“[”
您正在寻找subset
如果你的数据被称为mydata
newdata <- subset(mydata, city < 1e6)
或者你可以使用[
,这是编程安全
newdata <- mydata[mydata$city < 1e6]
对于多个条件使用&
或|
其中approriate
你也可以使用sqldf
包使用sql
library(sqldf)
newdata <- sqldf('select * from mydata where city > 1e6')
或者你可以使用data.table
这使得语法更容易[
(以及作为内存使用效率)
library(data.table)
mydatatable <- data.table(mydata)
newdata <- mydatatable[city > 1e6]