R:자료구조
편집하기
Sam
(
토론
|
기여
)
님의 2020년 8월 12일 (수) 10:47 판
(
차이
)
← 이전 판
|
최신판
(
차이
) |
다음 판 →
(
차이
)
둘러보기로 이동
검색으로 이동
경고: 이 문서의 오래된 판을 편집하고 있습니다.
이것을 게시하면, 이 판 이후로 바뀐 모든 편집이 사라집니다.
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
{{R}}<br /> ==개요== 자료구조를 수용하기 위한 자료객체. ===종류=== 데이터형과 별개로 있는 자료형이다. {| class="wikitable" !객체 !코드명 !차원 !유형 !혼합가능여부 !객체 속성 |- |벡터 |vector |1 |수치, 문자, 복소수, 논리 |불가(하나의 유형만 사용) |mode(자료유형), length(길이), names(각 성분원소의 이름(인덱스)) |- |요인 |factor |1 |수치/문자 |불가 | |- |행렬 |matrix |2 |수치, 문자, 복소수, 논리 |불가 |mode, length(원소갯수), dim(행, 렬), nrow(행갯수), ncol(열갯수), dimnames(행, 렬 인덱스) |- |데이터프레임 |data.frame |2 |수치, 문자, 복소수, 논리 |가능 |mode, length(행갯수), dim, nrow, ncol |- |시계열 | |2 |수치, 문자, 복소수, 논리 |불가 |mode, length, tsp, start(시작시간), end(끝시간), frequency(주기) |- |배열 |array |2차원이상 |수치, 문자, 복소수, 논리 |불가 | |- |리스트 |list |2차원이상 |수치, 문자, 복소수, 논리, 표현식, call 등 |가능 | |} ====속성에의 접근==== 속성에 접근하려면 <code>해당속성(객체명)</code> 을 기입하면 된다. ==자주 사용하는 자료형== {| class="wikitable" |+ !이름 !벡터 !행렬 !데이터프레임 |- |설명 |Combind. 하나의 열을 의미한다. 다른 2차원 이상의 데이터에서 인덱스범위를 지정하는 데 쓰이기도 한다. 벡터를 결합하여 행렬이나 데이터프레임을 만들기도 한다. |Matrix. |dataframe. |- |생성 |c(데이터) |matrix( data=데이터, nrow=행수 ncol=열수 byrow=기준) |data.frame( 변수명(열이름)=벡터1, 변수명(열이름)=벡터2, ) 필요한 벡터만큼 넣는다. |- |자료형 변환 |as.vector(객체) |as.matrix(객체) |as.data.frame(객체) |} ==데이터형 관련 함수== {| class="wikitable" !이름 !기원 !기능 !사용법 |- |head() |head |지정한 행만큼 출력한다. |head(데이터셋, 지정숫자) |- |str() | |데이터를 확인한다. |str(데이터셋) |- |as() |as |데이터형을 변환한다. |열 전체의 변수형을 변환하려면 다음과 같이 한다. 데이터셋$열이름 = as.변수형(데이터셋$열이름) |} <br /> == 데이터 접근 == 일반적으로 인덱스나 $기호, 부분집합(subset)을 활용하여 접근한다. 기본적으로 선택은 데이터셋[행, 열] 의 인덱스를 사용하거나 벡터를 사용하거나 한다. {| class="wikitable" ! !1차원 !2차원 !3차원 이상 |- |데이터 접근 |일반 언어에서 처음 인덱스가 0인 것과 달리, R은 1부터 시작한다. {| class="wikitable" |+ !의도 !방법(예시) |- |데이터1개 접근 |벡터명[1] |- |여러 개 접근 |벡터명[c(1,3,5,9)] |- |범위 접근 |벡터명[2:5] |- |제외하고 접근 |벡터명[-3] |} | {| class="wikitable" !의도 !방법(예시) |- |데이터1개 접근 |구조명[2,3] |- |여러 개 접근 |구조명[c(1,2,3), ] |- | rowspan="2" |행 전부 |구조명[1, ] |- |구조명$열이름 |- |열 전부 |구조명[ ,1] |- | rowspan="2" |범위 접근 |구조명[2:3, ] |- |subset(데이터셋, select=범위) |- |제외하고 접근 |구조명[ ,-1] 구조명[-(1:3), -2] |} 여러 방법을 조합해 <code>구조명[2:3, -2]</code> 등의 형태로 사용 가능 |리스트의 [3]에 접근하면 원소 1개. 리스트의 <nowiki>[[3]]</nowiki>에 접근하면 벡터 혹은 자료형에 접근하게 된다. 리스트에서 인덱스를 사용하려면 대괄호를 2개씩 써줘야 한다. 리스트명$열이름$다음차원열이름$.... 형식으로 접근할 수도 있다. |- |조건에 따른 접근 | |특정 조건을 가진 행만을 포함하기 위해. 구조명[구조명$열이름1 == "해당조건" & 구조명$열이름2 논리식, 열번호] 해당 조건을 가진 행만 뽑아낸다. | |}<br /> ==벡터 관련 함수== ===수열생성=== {| class="wikitable" !이름 !기원 !기능 !사용법 |- |seq() |sequence |순차적 데이터 생성. {| class="wikitable" |+ !옵션 !설명 |- |along.with=객체명 |해당하는 객체와 동일한 크기로 자료열을 생성. |- |length=자연수 |by옵션 대신 이 옵션을 넣으면 증가범위를 자동으로 <code>(마지막-시작) / (자연수-1)</code> 로 잡는다. |} <br /> |seq(from=시작숫자, to=마지막숫자, by=증가범위) |- |rep() |repeat |반복 데이터 생성 |rep(반복할값, 반복횟수) |- |시작:끝 | |시작부터 끝값에 이르기까지 1, -1 간격으로 벡터를 생성한다.(다른 언어에서도 흔히 쓰이는 방식) |시작:끝 |} ===데이터조작=== {| class="wikitable" !이름 !기원 !기능 !사용법 |- |length() |length |데이터 크기 파악 |length(벡터) |} ===벡터결합=== {| class="wikitable" !이름 !기원 !기능 !사용법 |- |cbind() |column | rowspan="2" |벡터를 결합해 행렬을 만든다. {| class="wikitable" |+deparse.level !옵션 !설명 |- |0 |함수 내에 정의된 이름만 사용 |- |1 |기존에 정의된 객체 이름 사용 |- |2 |이름 자동 생성 |} |cbind(벡터1, 벡터2, 행렬, 데이터프레임 ..., deparse.level=1) |- |rbind() |row | |} ==2차원 데이터 관련 함수== 직관적인 사용을 위해 %>%를 사용하는데, 이는 dplyr의 기능이다. {| class="wikitable" !이름 !기원 !기능 !사용법 |- |dim() | |데이터프레임이나 행렬에서 데이터 크기 파악 행과 열 숫자를 순서대로 제공한다. |dim(데이터셋) |- | | | | |} ===데이터 추가하기, 연산하기=== {| class="wikitable" !이름 !기원 !기능 !사용법 |- |mutate() | |하나의 변수를 추가한다. |데이터셋 = 데이터셋 %>% mutate(추가할열이름 = 연산식) |- | | |변수 생성. 다음의 방법들로 가능하다. |데이터셋$열이름 = 연산식 데이터셋[, "열이름"] = 연산식 |- |mutate_if() | |조건에 해당하면 실행한다. mutate_if(판별문, 실행문) |데이터셋 = 데이터셋 %>% mutate_if(is.integer, as.numeric) |- |mutate_at() | |지정한 변수들에 대해 계산 적용. 열이름에 '-'를 넣으면 그 변수는 빼고 계산한다. |데이터셋 = 데이터셋 %>% mutate_at(vars(열이름1, 열이름2, ...,), 연산식) |} ===데이터 처리=== {| class="wikitable" !이름 !기원 !기능 !사용법 |- |order() |order |순서대로 정렬한다. {| class="wikitable" |+ !속성 !설명 |- |decreasing= |내림차순여부 True혹은False 열이름에 '-'를 붙이면 속성값과 바꾼다. |- |na.last= |TRUE면 na를 맨 뒤에. |- | | |} |새로운데이터셋 = 데이터셋[order(데이터셋[ , '열이름'], decreasing = Ture), ] |- |slice() | |index를 설정하여 원하는 행을 추출한다. |데이터셋 = 데이터셋 %>% slice(1:10) |- |select() | |index를 설정하여 원하는 열을 추출한다. column명을 쓸 수 있다. |데이터셋 = 데이터셋 %>% select(1:10, 열이름1, 열이름2, ...) |- |filter() | |원하는 조건에 해당하는 데이터 추출. |데이터셋 = 데이터셋 %>% filter(열이름1 = "해당내용") |- |select_if() | |뽑는 조건을 설정할 수 있다. ex) 데이터타입에 따라 뽑는다든가. |데이터셋 = 데이터셋 %>% select_if(is.integer) |- |arrange() | |데이터 정렬. 기본적으로 오름차순인데, 변수에 '-'를 붙여주면 내림차순이 된다. |데이터셋 = 데이터셋 %>% arrange(-열이름) |- |top_n() | |가장 값이 높은 값들을 추출. top_n(숫자, 열이름) |top_n(5, Year) |- |distinct() | |중복데이터 제거. 해당 열이름에서 하나라도 중복되면 지운다. |데이터셋 = 데이터셋 %>% distinct(열이름1, 열이름2, 열이름3, ...) |} ==데이터 조작 관련함수== {| class="wikitable" !이름 !기원 !기능 !사용법 |- |rank() |rank |관찰치의 순위를 뽑아낸다.. {| class="wikitable" |+ !속성 !설명 |- |ties.method= |c("열이름1", "열이름2", ...) 형태로 같은 값에 대한 우선순위 할당. |- |na.last= |TRUE면 na를 맨 뒤에. |} |새로운데이터셋 = rank(데이터셋, ties.method=c("열1", "열2", ...) |} ===데이터 수치 조작=== {| class="wikitable" !이름 !기원 !기능 !사용법 |- |quantile() |qunatile |각 분위수에 해당하는 값을 꺼낸다. |quantile(데이터셋$열이름, probs = c(0.1, 0.3, 0.5, 0.7, 0.9) 10, 30, 50, 70, 90%에 해당하는 값들을 보여준다. [이걸 변수에 저장하거나 하진 못하나?] |- |sum() |sum |합. |sum(데이터셋$열이름) |- |rowSums() | |행별 합. |rowSums(데이터셋[범위]) rowSums(데이터셋[2:8]) |- |colSums() | |열별 합. |colSums(데이터셋[범위]) |- |mean() |mean |평균. |mean(데이터셋$열이름) |- |rowMeans() | |행별 평균. |rowMeans(데이터셋[범위]) |- |sd() | |표준편차 |sd(데이터셋$열이름) |}위 연산들에서 결측치를 생략하고 계산하고자 한다면 뒤에 <code>na.rm=True</code>를 붙여주면 된다. ex) <code>sum(데이터셋[범위], na.rm=True)</code> <br /> ===데이터 통계=== {| class="wikitable" !이름 !기원 !기능 !사용법 |- |table() |table |빈도 테이블 작성. 열 안에 속한 요소가 몇 번씩 등장하는지 세어 테이블로 만든다. |테이블명 = as.data.frame(table(데이터셋$열이름)) |- |xtabs() | |2차원 테이블 작성. 열이름1과 열이름2 안에 나타나는 조합의 수별로 몇 번씩 등장하는지 센다. |테이블명 = as.data.frame(xtabs(~ 데이터셋$열이름1 + 데이터셋$열이름2)) |}
요약:
학교의 모든 지식. SMwiki에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
학교의 모든 지식. SMwiki:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
이 문서에서 사용한 틀:
틀:R
(
편집
)
둘러보기 메뉴
개인 도구
로그인하지 않음
토론
기여
로그인
이름공간
문서
토론
한국어
보기
읽기
편집
원본 편집
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보