Je suis nouveau chez R et je n'arrive pas à maîtriser ce concept. Supposons que j'ai une table chargée appelée "lieux" avec 3 colonnes disons - ville, population et température moyenne d'été
Disons que je veux "filtrer" - produire un nouvel objet de table où la population est inférieure à 1 million et la température estivale moyenne est supérieure à 70 degrés.
Dans tout autre programme que j'ai utilisé, ce serait assez facile, mais après avoir fait des recherches, je me retrouve dans une plus grande confusion. Étant donné le but de R et ce qu'il fait, cela doit être assez simple.
Comment appliquer les conditions ci-dessus au tableau? Quelles seraient les étapes? D'après ce que je comprends, je ne peux pas simplement sélectionner les en-têtes de tableau en fonction de leur nom, ce qui serait Nice (par exemple, OERE ville <1000000)
Étant donné un cadre de données "dfrm" avec les noms des villes dans la colonne "ville", la population dans la colonne "population" et la température moyenne estivale dans la colonne "meanSummerT", votre demande de sous-ensemble répondant à ces exigences communes serait satisfaite. avec l'un d'eux:
subset( dfrm, population < 1e6 & meanSummerT > 70)
dfrm[ which(dfrm$population < 1e6 & dfrm$meanSummerT > 70) , ]
dfrm[ which(dfrm[['population']] < 1e6 & dfrm[['meanSummerT']] > 70) , ]
Si vous vouliez juste les noms des villes répondant à ces critères communs, alors cela fonctionnerait:
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" ]
Notez que les noms de colonne ne sont pas cités dans le sous-ensemble ou à la suite de l'opérateur "$" mais ils sont cités dans "[["
Vous recherchez subset
si vos données s'appellent mydata
newdata <- subset(mydata, city < 1e6)
Ou vous pouvez utiliser [
, ce qui est par programmation plus sûr
newdata <- mydata[mydata$city < 1e6]
Pour plusieurs conditions, utilisez &
ou |
lorsque approprié
Vous pouvez également utiliser le package sqldf
pour utiliser sql
library(sqldf)
newdata <- sqldf('select * from mydata where city > 1e6')
Ou vous pouvez utiliser data.table
ce qui facilite la syntaxe pour [
(en plus d'être efficace en mémoire)
library(data.table)
mydatatable <- data.table(mydata)
newdata <- mydatatable[city > 1e6]