프로그래밍 /R

R에서 데이터 추출(데이터에서 하위 구조 데이터 추출), 치환 및 삽입하기

yooj_lee 2019. 6. 12. 17:15
300x250

- 데이터 추출하기

: 데이터를 확인했다면, 데이터에서 하위구조 데이터를 추출하면서 분석의 기반을 다지는 것.

 

1. '$' 연산자를 사용한 하위구조 데이터 추출

ex) aws$TA

: aws라는 데이터프레임 객체의 TA라는 열 리턴

 

2. 벡터 연산을 사용한 하위 구조 데이터 추출

1) 행 추출

① 단일 숫자

ex) aws[2, ]

 aws의 2번째 행 추출해서 리턴. 뒤에 column자리는 비워놓음으로써 2번째 행의 모든 열을 다 리턴.

② 문자

ex) aws["2", ]

 aws의 2번째 행 추출해서 리턴. 혹은 행 이름을 문자로 지정했을 경우에 사용.

③ 연속

ex) aws[3:10, ]

→ 3행부터 10행까지 추출해서 리턴

④ 이산

ex) aws[c(2,135, 3:10), ]

 2행, 135행, 3부터 10행까지 추출해서 리턴. 전달된 인자 순서대로 추출됨. 알아서 정렬 이런 거 없음.

 

2) 열 추출

① 단일 숫자

ex) aws[ ,3]

 aws의 3번째 열 추출. 앞에 row 자리는 비워놓음으로써 3번째 열의 모든 행을 다 리턴.

② 문자

ex) aws[, "wind" ]

 wind 열(변수)만 리턴

③ 복수 문자

ex) aws[ , c("AWS_ID", "TA")]

 'AWS_ID', 'TA'열 리턴

 연속

ex) aws[ , 3:4 ]

→ 3열부터 4열까지 리턴

⑤ 이산

ex) aws[ ,c(1,3) ]

 1열부터 3열까지 리턴

 

3) 행, 열 추출

ex) aws[1,3]  # 숫자 인자 전달

aws["1", "TA"] # 문자 인자 전달

aws[2:5, c("TA", "Wind")] # 복수의 행, 열 추출

 

* 조건연산자 (논리연산자로 조건문처럼 사용 가능)

데이터 추출할 때 굉장히 편하게 쓰일 듯하다. 내가 if문과 for loop을 사용하지 않고 한 줄의 코딩으로 뽑아낼 수 있는 것! 행 자리에 조건문이 들어간다. 즉, row에 대한 연산이 이루어지는 것임을 알 수 있다.

ex) df_1[df_1$$b >= 3, ]

df_1[df_1$aa == "b", ]

df_1[(df_1$bb > 1 && df_1$bb < 4), ]

이들은 해당 조건문에 참인 행을 출력한다. 

** 마이너스 부호 활용시 특정 행 or 열을 제외한 데이터 추출 가능.

 

- 데이터 치환 및 삽입

1. 벡터 연산을 사용한 데이터 치환 (이라 쓰고 변경이라 읽는다)

 

aws[row, col] <- value

 

- 데이터 치환 및 삽입

1. 벡터 연산을 사용한 데이터 치환 (이라 쓰고 변경이라 읽는다)

 

aws[row, col] <- value

 

2. 벡터 연산을 사용한 데이터 삽입

기존에 없었던 열이나 행을 명시해주면서 값을 할당시켜주면 됨.

ex) aws[, ncol(aws) + 1] <- "new" (하나만 명시해줘도 칼럼 전체에 new가 다 assign됨)

aws[, "last_one"] <- c(1,2,3,4,5) (새로운 column name을 인덱스에 전달해줘도 데이터 삽입 ok)

 

300x250