2017-09-26 5 views
1

Je suis un débutant d'apprendre comment sous-ensemble des lignes et des colonnes spécifiques à partir d'un ensemble de données dans R. J'utilise le state.x77 jeu de données dans R Studio comme pratique. Lorsque je tente de sélectionner les colonnes spécifiées, je reçois le message d'erreur suivant:colonnes et des lignes de sous-ensembles spécifiques d'un data.frame - message d'erreur « symbole inattendu ... »

library(dplyr) 
library(tibble) 

select(state.x77, Income, HS Grad) 
Error: unexpected symbol in "select(state.x77, Income, HS Grad" 

Je ne comprends pas ce symbole dans cette ligne de code est incorrect.

Aussi, si je suis en train de filtrer un certain état en plus de sélectionner certaines colonnes (variables), comment puis-je utiliser la fonction de filtre lorsque la liste des états est les noms de ligne? Lorsque je tente:

rownames_to_column(state.x77, var = "State") 

il crée une colonne appelée État pour les noms de l'État, mais il ne semble pas être permanente quand je vais voir state.x77 (et je ne peux donc pas utiliser la fonction de filtre).

Je suis désolé, je suis très bien un débutant. Toute aide serait appréciée.

Merci.

Répondre

1

Il y a deux questions. Tout d'abord, state.x77 est une matrice, vous avez donc besoin de le convertir en une trame de données en raison select fonction du package dplyr prend trame de données uniquement comme premier argument. Deuxièmement, s'il y a des espaces dans les noms de colonne, il est nécessaire d'utiliser `` ou "" pour entourer le nom de la colonne.

# Load package 
library(dplyr) 

# Show the class of state.x77 
class(state.x77) 
# [1] "matrix" 

# Convert state.x77 to a data frame 
state.x77_df <- as.data.frame(state.x77) 

# Show the class of state.x77_df 
class(state.x77_df) 
[1] "data.frame" 

# Select Income and `HS Grad` columns 
# All the following will work 
select(state.x77_df, Income, `HS Grad`) 
select(state.x77_df, "Income", "HS Grad") 
select(state.x77_df, c("Income", "HS Grad")) 

Pour votre deuxième question, vous devez sauvegarder la sortie dans l'objet comme suit.

library(tibble) 

state.x77_df <- rownames_to_column(state.x77_df, var = "State") 
head(state.x77_df) 
     State Population Income Illiteracy Life Exp Murder HS Grad Frost Area 
1 Alabama  3615 3624  2.1 69.05 15.1 41.3 20 50708 
2  Alaska  365 6315  1.5 69.31 11.3 66.7 152 566432 
3 Arizona  2212 4530  1.8 70.55 7.8 58.1 15 113417 
4 Arkansas  2110 3378  1.9 70.66 10.1 39.9 65 51945 
5 California  21198 5114  1.1 71.71 10.3 62.6 20 156361 
6 Colorado  2541 4884  0.7 72.06 6.8 63.9 166 103766 
+0

Cela est extrêmement instructif. Merci beaucoup. – jp334

+0

@ jp334 Je suis heureux d'aider. S'il vous plaît accepter ce poste comme la réponse si vous pensez que cela est utile pour vos questions. – www

0
# Convert state.x77 into a dataframe and renaming rowname into State column 
df <- tibble::rownames_to_column(data.frame(state.x77), var = "State") 

## You can select any columns by their column names or by index 
# by column names 
col_names <- c("Income", "HS.Grad") 
df[,col_names] 

# by column index 
col_index <- c(3,7) 
df[, col_index] 

# Filtering(subsetting) data by state 
subset(df, df$State == "Arizona") 

State Population Income Illiteracy Life.Exp Murder HS.Grad Frost Area 
Arizona  2212 4530  1.8 70.55  7.8 58.1  15 113417