我是R的新手,无法掌握这个概念.假设我有一个名为"places"的表格,其中包含3个列 - 城市,人口和夏季平均温度
假设我想"过滤" - 产生一个新的表格对象,其中人口少于100万,夏季平均温度大于70度.
在我使用的任何其他程序中,这将非常简单,但是我做了一些研究,我正在努力让自己陷入更大的困惑.鉴于R的目的和它的作用,这必须是非常简单的东西.
我如何将上述条件应用于表格?步骤是什么?根据我的理解,我不能轻易地根据他们的名字选择表格标题,这样会很好(例如WHERE city <1,000,000)
42-*_*42- 18
给定一个数据框"dfrm",其中包含"城市"列中城市的名称,"人口"列中的人口和"meanSummerT"列中的平均夏季温度,您对满足这些联合要求的子集的请求将得到满足以下任何一个:
subset( dfrm, population < 1e6 & meanSummerT > 70)
dfrm[ which(dfrm$population < 1e6 & dfrm$meanSummerT > 70) , ]
dfrm[ which(dfrm[['population']] < 1e6 & dfrm[['meanSummerT']] > 70) , ]
Run Code Online (Sandbox Code Playgroud)
如果您只想要符合这些联合标准的城市名称,那么这些将起作用:
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" ]
Run Code Online (Sandbox Code Playgroud)
请注意,列名未在子集中引用或在"$"运算符后引用,但它们在"[["内引用
mne*_*nel 13
你在找 subset
如果您的数据被调用 mydata
newdata <- subset(mydata, city < 1e6)
Run Code Online (Sandbox Code Playgroud)
或者您可以使用[,这在程序上更安全
newdata <- mydata[mydata$city < 1e6]
Run Code Online (Sandbox Code Playgroud)
对于多个条件使用&或适用的|地方
您也可以使用该sqldf包sql
library(sqldf)
newdata <- sqldf('select * from mydata where city > 1e6')
Run Code Online (Sandbox Code Playgroud)
或者你可以使用data.table它使语法更容易[(以及内存效率)
library(data.table)
mydatatable <- data.table(mydata)
newdata <- mydatatable[city > 1e6]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
82305 次 |
| 最近记录: |