基于标准中的数据帧中的滤波数据

问题描述 投票:0回答:2
我如何将上述条件应用于表?这些步骤是什么?据我了解,我不能轻松地根据其名称选择桌子标题,这很好(例如,城市

cavion dataFrame“ dfrm”,带有“城市”列中的城市名称,“人口”列中的人口和“ Meansummert”列中的夏季温度,您对符合这些联合要求的子集请求的要求是遇到了任何一个:

subset( dfrm, population < 1e6 & meanSummerT > 70) dfrm[ which(dfrm$population < 1e6 & dfrm$meanSummerT > 70) , ] dfrm[ which( dfrm[[ 'population' ]] < 1e6 & dfrm[[ 'meanSummerT' ]] > 70) , ]

如果您只想符合这些联合标准的城市的名称,那么这些都会起作用:< 1,000,000 )

r subset
2个回答
20
投票

注意,该列名在子集中没有引用或遵循“ $”运算符,但在“ [“ [”中引用。并请注意,如果没有数据匹配行,则使用

which
可能是危险的,因为您不会获得整个数据框架。
    

您正在寻找

subset


如果您的数据称为

mydata


14
投票

或您可以使用

[
,这是程序上更安全的

newdata <- mydata[mydata$city < 1e6]

为多种条件使用
&

|

您也可以使用

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]


使用{dplyr}在r中填充数据非常简单,就像您预期的那样:

library(dplyr) data <- tibble(city = c("Santiago", "Concepcion", "Valparaiso"), population = c(7116706, 1036142, 1054253), temperature = c(22.8, 17.6, 17.5)) data |> filter(population > 2000000) #> # A tibble: 1 × 3 #> city population temperature #> <chr> <dbl> <dbl> #> 1 Santiago 7116706 22.8 data |> filter(population > 1000000, temperature >= 17.6) #> # A tibble: 2 × 3 #> city population temperature #> <chr> <dbl> <dbl> #> 1 Santiago 7116706 22.8 #> 2 Concepcion 1036142 17.6

用Rreprexv2.1.1

于2025-02-14创建
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.