2017-09-26 10 views
1

저는 R의 데이터 집합에서 특정 행과 열을 부분 집합하는 방법을 배우는 초보자입니다. state.x77을 사용하고 있습니다. 연습으로 R Studio의 데이터 세트. 지정한 열을 선택하려고하면 다음 오류 메시지가 나타납니다.data.frame에서 특정 열과 행을 서브 세트 함 "예기치 않은 기호 in ..."

library(dplyr) 
library(tibble) 

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

해당 코드 줄의 어떤 기호가 올바르지 않은지 이해할 수 없습니다.

특정 열 (변수)을 선택하는 것 외에도 특정 상태를 필터링하려고하면 상태 목록이 행 이름 일 때 필터 기능을 어떻게 사용합니까? 내가하려고하면 :

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

그것은 국가의 이름에 대한 국가라는 열을 생성하지만 state.x77를보기로 이동 (따라서 나는 필터 기능을 사용할 수 없습니다) 때 영구적으로 될 것 같지 않습니다.

미안하지만, 초보자입니다. 어떤 도움을 주시면 감사하겠습니다.

감사합니다.

답변

1

두 가지 문제가 있습니다. 첫째, state.x77은 매트릭스이기 때문에 select 함수의 dplyr 패키지의 함수는 첫 번째 인수로만 데이터 프레임을 사용하므로 데이터 프레임으로 변환해야합니다. 둘째, 열 이름에 공백이 있으면 "또는" "을 사용하여 열 이름을 묶어야합니다.

# 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")) 

두 번째 질문에 대해서는 다음과 같이 출력을 개체에 다시 저장해야합니다.

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

이 매우 유익하다. 고마워. – jp334

+0

@ jp334 도움이되어 기쁩니다. 귀하의 질문에 도움이된다고 생각하시면이 게시물을 답으로 받아주십시오. – 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