170 likes | 323 Views
데이터 프레임. 2014 년 가을학기 손시운 ( ssw5175@kangwon.ac.kr ) 지도 교수 : 문양세 교수님. 데이터 프레임. 직관적으로 데이터프레임은 행과 열의 2 차원 구조를 가진 행렬 하지만 각 열이 다른 형식을 취할 수 있다 는 점에서 행렬과 다름. employees. 데이터 프레임 생성. data.frame () 함수 : 데이터 프레임을 생성하는 함수 stringsAsFactors 인수
E N D
데이터 프레임 2014년 가을학기 손시운(ssw5175@kangwon.ac.kr) 지도 교수: 문양세 교수님
데이터 프레임 • 직관적으로 데이터프레임은 행과 열의 2차원 구조를 가진 행렬 • 하지만 각 열이 다른 형식을 취할 수 있다는 점에서 행렬과 다름 employees
데이터 프레임 생성 • data.frame() 함수: 데이터 프레임을 생성하는 함수 • stringsAsFactors인수 • 팩터는 간단하게 벡터에 ‘레벨’이라는 추가 정보가 더해진 것 (자세한 것은 생략) • 여기서는 문자 데이터를 팩터가 아닌 벡터로 사용하므로 FALSE로 설정 • 기본적으로 TRUE로 설정되어 있음
파일로부터 데이터 프레임 생성 • read.table() 함수: 파일을 읽고 데이터 프레임으로 연결하는 함수 • 데이터 파일의 경로를 명시한 후, header 인수에 헤더의 표기 유무를 정의
데이터 프레임 접근 • 데이터 프레임은 리스트이므로 구성요소의 이름 또는 인덱스를 통해 접근 • 데이터 프레임이 행렬과 같은 성격이기 때문에 행렬처럼 접근할 수 있음 • 접근 방법 중 d$kids가 명확하기 때문에 보다 안전
행렬 방식 연산 • 부분 데이터 프레임 추출 • 데이터 프레임은 행과 열로 표현하므로, 인덱스를 통해 데이터를 추출 가능
행렬 방식 연산 • 부분 데이터 프레임 추출 • 하나의 열을 추출할 경우 데이터 프레임이 아닌, 벡터로 추출됨 • 이를 방지하기 위해, drop 인수를 FALSE로 명시
행렬 방식 연산 • 필터링 • 행렬과 유사하게 필터링이 가능 • e.g.) 첫 번째 시험의 점수가 3.0 이상인 학생들의 데이터
행렬 방식 연산 • NA 값을 다루는 추가적 방법들 • subset() 함수: 필터링을 다루며 NA 값은 처리하지 않음 (ch. 2) • subset() 함수에서 examsquiz를 불필요하게 중복하여 작성할 필요가 없음
행렬 방식 연산 • NA 값을 다루는 추가적 방법들 • 경우에 따라 NA가 있는 관측치는 모두 제거할 필요가 있음 • complete.cases() 함수: 데이터 프레임의 NA가 없는 행을 TRUE로 반환
rbind(), cbind() 함수 사용 • rbind()를 통해 행을 추가하는 경우 • cbind()를 통해 열을 추가하는 경우
데이터 프레임 결합 • merge() 함수: 두 데이터 프레임을 공통 변수 값을 이용해 하나로 결합 • 관계형 데이터베이스에서 ‘조인join’ 개념과 유사
데이터 프레임 결합 • by.x, by.y인수: 같은 정보를 갖지만 이름이 다를 경우에 사용
데이터 프레임 결합 • 원치 않는 중복에 대한 결과 • 위 경우처럼 오류가 생길 수 있으므로, 결합할 때는 신중히 변수를 결정
데이터 프레임에 함수 적용 (1/2) • 리스트에서처럼 데이터 프레임에서도 lapply() 함수를 사용할 수 있음
데이터 프레임에 함수 적용 (2/2) • lapply() 함수는 결과를 리스트로 반환 • as.data.frame() 함수: 데이터를 데이터 프레임 형태로 바꿔주는 함수 • 이름과 지역의 관계가 사라졌으므로 가치가 없음 • 예를 들어, John의 지역은 HI였으나, 정렬 후 MA로 변형 • order() 함수를 사용하여 정렬할 것을 권장
order() 함수를 사용한 정렬 • order() 함수: 정렬된 데이터의 인덱스를 반환하는 함수 • 기본적으로 오름차순이며, 내림차순은 “-”를 붙여 음수로 만들어 사용 • 앞의 예제를 states 기준으로 정렬한 경우