J'ai un bloc de données R avec 6 colonnes et je veux créer un nouveau bloc de données qui ne comporte que trois des colonnes.
En supposant que mon trame de données est df
, et je veux des colonnes d'extraction A
, B
et E
, c'est la seule commande que je peux comprendre:
data.frame(df$A,df$B,df$E)
Existe-t-il une manière plus compacte de procéder?
df1 %>% select(A, B, E) %>% rowMeans(.)
. Consultez la documentation de la%>%
pipe en tapant?magrittr::`%>%`
Vous pouvez créer un sous-ensemble à l'aide d'un vecteur de noms de colonne. Je préfère fortement cette approche à celles qui traitent les noms de colonnes comme s'il s'agissait de noms d'objets (par exemple
subset()
), en particulier lors de la programmation dans des fonctions, des packages ou des applications.la source
object of type 'closure' is not subsettable
.df
.df
est également une fonction du package de statistiques.-"A"
c'est une erreur de syntaxe. Et?Extract
dit, « , peut aussi être des nombres entiers négatifs, indiquant les éléments / tranches de quitter de la sélection. »i
j
...
> df[,c("A")]
[1] 1
. L'utilisationsubset
n'a pas cet inconvénient.C'est le rôle de la
subset()
fonction:la source
c("A", "B")
c'est un vecteur, pas une liste.Il y a deux choix évidents: celui de Joshua Ulrich
df[,c("A","B","E")]
ouun péché
la source
Pour une raison quelconque seulement
travaillé pour moi. Toutes les syntaxes ci-dessus ont produit "des colonnes non définies sélectionnées".
la source
Où df1 est votre trame de données d'origine:
la source
dplyr
. Il utilisebase::subset
et est identique à la réponse de Stéphane Laurent, sauf que vous utilisez des numéros de colonne au lieu de noms de colonne.Vous pouvez également utiliser le
sqldf
package qui effectue des sélections sur les trames de données R comme:Cela donne en sortie un bloc de données
df1
avec des colonnes: A, B, E.la source
Vous pouvez utiliser
with
:la source
En outre, vous pouvez attribuer un nom différent aux données nouvellement créées
la source
[
et le sous-ensemble ne sont pas substituables:[
renvoie un vecteur si une seule colonne est sélectionnée.la source
drop=FALSE
. Exemple:df[,c("a"),drop=F]