본문 바로가기

[프로그래밍] R

[프로그래밍 R][2019/08/26] 조건문, 데이터 가공 dplyr

1.

1-1. rm(list=ls())로 메모리에서 변수 제거하기.

1-2. dir()로 워킹디렉토리의 파일 확인

 

2.

 

3.readLines()로 파일 읽기.

 

 

B. R의 함수(기본 내장함수, 패키지(외장) 함수

 

1.  sort() 내장함수를 사용하면 오름차순(기본값) 내림차순으로 정렬할 수 있다.

 

 

2. 데이터 프레임을 정렬하기 위해서는 order() 이용해서 위치를 가르키는 벡터를 얻고 그 얻은 백터를 이용해서

데이터프레임[c(order()]를 적는다. 그러니까 order()를 이용하여 정렬 된 위치 값을 가지고 온 다음에, 해당 프레임을 슬라이싱 한다고 생각해주면 된다.

 

 

3. apply는 반복문을 대체한다. apply(행렬, 1 =행, 2=열, sum, mean.. 등)

 

 

4.apply, lapply(list), sapply(simple)

apply는 행인지 열인지 알려 줘야 했다. sapply는 알려줄 필요 없는 기능 만으로 이루어져 있다.

sapply(x, class)를 이용해서 x의 각 열이 어떤 클래스인지를 알 수 있다.

 

C. 조건문

 

1.

 

2. 일반적인 if ~else문이다.

2-2. 다중 if 문을 switch를 통해서 표현할 수 있다.

2-3. 조건문이 참이면 두 번쨰 것, 거짓이면 세번 째 것

 

D. 함수는 파이썬과 그렇게 큰 차이가 없다. 정의 방법만 약간 다르기만 하다

 

1. 벡터 값이 보이지 않게 해준다. 그렇게 의미는 없다.  R에서의 시스템변수가 파이썬의 전역변수이다.

 

 

2. 파이썬에서는 global을 선언 했던 것을 여기서는 <<를 이용하여 표시한다.

 

]

E. 서브세팅 = 인덱싱

 

1. 행을(관측치)를 뽑는 것을 필터라고 한다! 열을 뽑는 것을 셀렉트라고 한다. 필터를 조건을 포함한다.

 

2.

 

행들을 필터링 했을 때, 각 데이터의 구조가 바뀌게 됨으로 str로 확인한 다음에 타입, 예를 들어 여기서는 factor의 수를 다시 고쳐 주어야 한다.

 

3.  subset은 함수이기 때문에, 컴마를 넣어줄 필요가 없다.

 

 

4. 서브세팅은 데이터를 가공하는 것이다!. 행과 열을 마음데로!

 

 

5. dplyr는 연장의 일종이라고 생각하면 된다. 디플라이어에 는 %in% 멤버쉽연산자가 있다. 멤버쉽 오퍼레이트를 사용하년 조금 더 짧게 연산을 할 수 있다.

 

 

6.  sapply는 sapply(데이터프레임, 함수) 형태로 벡터가 출력이 된다. 

 

lapplay는 리스트가 나온다. laaply의 문법을 이해하자! 모두 apply에서 파생된 것이다.

 

apply, sapply, lapply를 볼 때는 무엇이 리턴 되는지 확인 되야 하나, 하나 당 하나의 값이 넘어 온다면 벡터가

여러 개라면 리스트나, 행렬이 나올 수도 있다.

 

sapply가 행렬을 출력하면, 모두다 한가지의 데이터 타입의 형태로 튀어날 수도 있기 때문에 주의 해야 한다. 데이터 타입을 보전하기 위해서는 lapply를 써야 한다.

 

 

7. duplicated(x)는 참 거짓 값을 주고, which는 조건에 맞는 위치 값을 준다. duplicated는 이 작업을 한번에 해준다.

 

8. x$strin

...더보기
$로 끝나느
> x$string <- gsub("e$", "", x$string)

^로 끝나는 
> x$string <- gsub("^a", "A", x$string)

 

 

9. 새로운 변수를 추가하기 참 쉽죠? 더 편하게 하는 방법이 dplyr 다!

 

 

 E. dplyr

 

1. 원래는 mtcars[c(mtcars$am, mtcars$gear)]로 써야 한다. 하지만 dplyr가 있다면 데이터 프레임은 한 번만 써줘도 된당!

 

2. mutate를 통해서 새로운 칼럼을 추가한다.

 

 

3. dplyr가 없다면 mtcars[mtcars$cyl ==4]로 처야 한다. 

 

 

4. order와 sort를 쓸필요 없이 arrange를 통해 데이터를 정렬 시킬 수 있다.

 

5. unique와 duplicated가 있지만 distinct가 더 편하다.

 

 

6.

 

 

7. 내장함수로는 splite()가 있었지만 디플라이어에는 group_by가 있다. 하지만 그룹 바이만으로는 할 수 있는 것이 없다. 

splite이 나눈 다음에 sapply와 같은 것을 통해 함수를 적용 시켜 주었던 것처럼, 그룹바이 또한 써머라이즈 함수와 함께 사용될 때 적절하게 작동 할 수 있다.

 

 

 

8. 샘플데이터 뽑기와 그 비율로 뽑기.

 

9. 입출력이 없어서 굉장히 빠르다. 모두 다 메모리에서 처리 된다.

 

 

 

F. 데이터 가공