dh_0e

[R Lang] 함수 정리 (데이터 구조 생성 및 확인, 가공 및 처리, 결측치 처리, 구조 변경, 기초 통계 및 수학, 확률 및 난수, 데이터 입출력 및 기타) 본문

R

[R Lang] 함수 정리 (데이터 구조 생성 및 확인, 가공 및 처리, 결측치 처리, 구조 변경, 기초 통계 및 수학, 확률 및 난수, 데이터 입출력 및 기타)

dh_0e 2025. 10. 24. 16:28

데이터 구조 (생성, 확인, 변환)

1.1. 구조 생성

  • c(…): 하나 이상의 값들을 결합하여 벡터(vector)를 생성하는 함수이다.
  • matrix(데이터, nrow, ncol, byrow): 데이터를 nrow개의 행과 ncol개의 열을 가진 행렬(matrix)로 생성한다. byrow=TRUE이면 데이터를 행 우선으로 채운다.
  • array(데이터, dim): 데이터를 dim으로 지정된 차원(예: c(2,3,2))을 가진 배열(array)로 생성한다.
  • list(이름1 = 값1, 이름2 = 값2, …): 다양한 유형의 객체(벡터, 행렬, 리스트 등)를 포함하는 리스트(list)를 생성한다.
  • data.frame(열이름1 = 벡터1, 열이름2 = 벡터2, …): 길이가 같은 벡터들을 열로 하는 데이터 프레임(data frame)을 생성한다.
  • factor(데이터, levels, ordered): 범주형 데이터를 요인(factor)형으로 생성한다. levels로 범주의 순서나 종류를 지정할 수 있으며, ordered=TRUE는 순서형 요인을 만든다.
  • seq(from, to, by): from부터 to까지 by 간격으로 연속적인 숫자를 가진 벡터를 생성한다.
  • rep(x, times): x의 내용을 times만큼 반복하는 벡터를 생성한다.

1.2. 구조 확인 및 속성

  • is.numeric(x) / is.character(x) / is.logical(x): 객체 x가 각각 숫자형, 문자형, 논리형인지 확인하여 TRUE/FALSE를 반환하는 함수이다.
  • is.matrix(x) / is.data.frame(x): 객체 x가 각각 행렬, 데이터 프레임인지 확인하여 TRUE/FALSE를 반환하는 함수이다.
  • mode(x): 객체 x의 데이터 유형(예: "numeric", "character")을 문자열로 반환하는 함수이다.
  • class(x): 객체 x의 클래스(자료 구조, 예: "matrix", "data.frame")를 반환하는 함수이다.
  • typeof(x): 객체 x의 내부 저장 유형(예: "integer", "double")을 반환하는 함수이다.
  • str(객체): 객체의 구조(유형, 길이, 차원, 값의 일부 등)를 요약하여 보여주는 함수이다.
  • dim(x): 객체 x(행렬, 배열, 데이터 프레임)의 차원(행, 열 등)을 벡터로 반환하는 함수이다.
  • length(x): 객체 x(벡터, 리스트)의 요소 개수(길이)를 반환하는 함수이다.
  • head(x) / tail(x): 데이터 프레임이나 벡터 x의 처음 6개 또는 마지막 6개 요소를 보여주는 함수이다.

1.3. 이름 관리

  • names(x): 객체 x(벡터, 리스트 등)의 요소(열) 이름을 확인하거나, names(x) <- c(…) 형태로 이름을 지정하는 함수이다.
  • rownames(x) / colnames(x): 행렬이나 데이터 프레임 x의 행 이름 또는 열 이름을 확인하거나 지정하는 함수이다.
  • dimnames(x): 각 차원의 리스트 이름을 반환한다. list(열이름, 행이름)을 삽입하면 행 이름과 열 이름을 지정할 수 있다.

1.4. 구조 변환

  • as.vector(x) / as.matrix(x) / as.data.frame(x): 객체 x를 각각 벡터, 행렬, 데이터 프레임 형태로 강제 변환하는 함수이다.
  • t(x): 행렬 x의 행과 열을 바꾼 전치 행렬을 구하는 함수이다.
  • remove(x) / rm(x): 생성했거나 불러온 데이터셋을 삭제할 수 있는 함수이다.

데이터 가공 (Base R)

2.1. 행/열 결합

  • cbind(…): 여러 벡터나 행렬들을 열(column) 방향으로 결합하여 행렬 또는 데이터 프레임을 만드는 함수이다.
  • rbind(…): 여러 벡터나 행렬들을 행(row) 방향으로 결합하는 함수이다. (데이터 프레임의 경우 열 이름과 순서가 동일해야 함)

2.2. 데이터 추출 (Subsetting)

  • subset(데이터, subset, select): 데이터 프레임에서 subset 조건에 맞는 행을 추출하거나 select로 지정된 열을 선택하는 함수이다.

2.3. 정렬

  • order(…): 벡터를 정렬하는 데 필요한 인덱스 순서를 반환하는 함수이다. 데이터 프레임 정렬 시 df[order(df$col), ]처럼 사용된다.
  • sort(x, decreasing): 벡터 x를 정렬하는 함수이다. decreasing=TRUE이면 내림차순으로 정렬한다.

2.4. 함수 일괄 적용 (Apply 계열)

  • apply(데이터, dim, 함수): 데이터(행렬, 데이터 프레임)에 dim 값(1=행, 2=열) 방향으로 지정한 함수(예: mean, sum)를 일괄 적용하는 함수이다.
  • lapply(리스트, 함수): 리스트의 각 원소에 함수를 적용하고 결과를 리스트 형태로 반환하는 함수이다.
  • sapply(리스트, 함수): 리스트의 각 원소에 함수를 적용하고 결과를 가능한 한 벡터 또는 행렬 형태로 단순화하여 반환하는 함수이다.
  • tapply(데이터벡터, 요인벡터, 함수): 요인벡터의 그룹별로 데이터벡터에 함수(예: mean)를 적용하는 함수이다.
  • mapply(함수, …): 사용할 함수의 인수가 여러 개인 경우, 여러 리스트나 벡터를 인수로 받아 함수를 적용하는 함수이다.

2.5. 데이터 병합 (Join)

  • merge(df1, df2, by, all, all.x, all.y): 두 데이터 프레임 df1, df2를 by 키 변수를 기준으로 병합하는 함수이다. all, all.x, all.y 옵션으로 조인 방식(inner, left, right, full)을 제어한다.

2.6 벡터 간 집합 연산

  • union(x, y): x와 y의 합집합
  • intersect(x, y): x와 y의 교집합
  • setdiff(x, y): x에서 y를 제외한 차집합
  • setequal(x, y): x와 y가 같은 집합인지 확인

2.7 문자열 처리

 

  • grep(pattern, x): x 벡터(보통 문자형)에서 pattern(정규식)과 일치하는 요소의 인덱스(위치)를 반환하는 함수이다.
  • grepl(pattern, x): x 벡터의 각 요소가 pattern(정규식)과 일치하는지 여부를 논리값(TRUE/FALSE) 벡터로 반환하는 함수이다.
  • sub(pattern, replacement, x): x 벡터의 각 요소에서 pattern과 일치하는 첫 번째 부분을 replacement 문자열로 치환하는 함수이다.
  • gsub(pattern, replacement, x): x 벡터의 각 요소에서 pattern과 일치하는 모든 부분을 replacement 문자열로 치환하는 함수이다.

 


데이터 가공 (dplyr 패키지)

3.1. 행 조작

  • filter(데이터, 조건식): (dplyr) 데이터 프레임에서 조건식을 만족하는 행을 추출하는 함수이다.
  • arrange(데이터, 열이름, desc(열이름)): (dplyr) 데이터 프레임을 특정 열이름 기준으로 정렬하는 함수이다. desc()를 쓰면 내림차순으로 정렬한다.
  • distinct(데이터, 열이름…): (dplyr) 데이터 프레임에서 지정한 열이름을 기준으로 중복된 행을 제거하는 함수이다.
  • sample_n(데이터, 개수): (dplyr) 데이터 프레임에서 지정한 개수만큼 행을 무작위로 추출하는 함수이다.
  • sample_frac(데이터, 비율): (dplyr) 데이터 프레임에서 지정한 비율(0~1)만큼 행을 무작위로 추출하는 함수이다.

3.2. 열 조작

  • select(데이터, 열이름…): (dplyr) 데이터 프레임에서 지정한 열만 추출하는 함수이다. -c로 열을 제외할 수도 있다.
  • mutate(데이터, 새열이름 = 식): (dplyr) 데이터 프레임에 식을 계산하여 새로운 열을 추가하는 함수이다.

3.3. 그룹화 및 요약

  • summarise(데이터, 요약열이름 = 함수(열)) / summarize(…): (dplyr) 데이터를 함수(예: mean, n())를 이용해 요약하는 함수이다.
  • group_by(데이터, 열이름…): (dplyr) 데이터 프레임을 지정한 열이름의 그룹별로 묶어, 이후 summarise 등이 그룹별로 작동하도록 하는 함수이다.
  • n(): (dplyr) summarise 또는 mutate 내에서 현재 그룹의 행 개수를 반환하는 함수이다.
  • n_distinct(x): (dplyr) summarise 내에서 벡터 x의 고유한 값의 개수를 반환하는 함수이다.

3.4. 데이터 결합

  • bind_rows(…): (dplyr) 데이터 프레임들을 행(row) 방향으로 결합하는 함수이다. 열 이름이 다르거나 순서가 맞지 않아도 NA를 채워 결합해준다.
  • left_join(df1, df2, by): (dplyr) df1(왼쪽)을 기준으로 df2(오른쪽)를 by 키 변수로 결합하는 함수이다. df1에만 있는 키는 NA로 채워진다.
  • inner_join(df1, df2, by): (dplyr) df1과 df2 양쪽에 by 키 변수 값이 모두 존재하는 행만 결합하는 함수이다.
  • full_join(df1, df2, by): (dplyr) df1과 df2의 by 키 변수 값을 모두 포함하여 결합하는 함수이다. 한쪽에만 있는 키는 NA로 채워진다.

데이터 구조 변형 (reshape2 패키지)

  • melt(데이터, id.vars, measure.vars): (reshape2) 데이터 프레임을 '넓은(wide)' 형태에서 '긴(long)' 형태로 변환하는 함수이다. id.vars는 기준 열, measure.vars는 행으로 변환할 열들을 지정한다.
  • acast(데이터, 기준열 ~ 변환열 ~ 분리열): (reshape2) '긴(long)' 형태의 데이터를 기준열, 변환열, 분리열을 기준으로 배열(array) 형태로 변형하는 함수이다.
  • dcast(데이터, 기준열 ~ 변환열): (reshape2) '긴(long)' 형태의 데이터를 기준열을 행으로, 변환열의 값들을 열 이름으로 하는 '넓은(wide)' 데이터 프레임 형태로 변형하는 함수이다.

결측치(NA) 처리

  • is.na(x): 객체 x의 각 요소가 결측치(NA)인지 확인하여 TRUE/FALSE 벡터를 반환하는 함수이다.
  • na.omit(x): 객체 x에서 NA를 포함하는 행(row) 전체를 제거하는 함수이다.
  • complete.cases(x): 데이터 프레임 x의 행별로 NA가 하나라도 있으면 FALSE, 없으면 TRUE를 반환하는 함수이다. (주로 x[complete.cases(x), ] 형태로 NA 없는 행 추출에 사용)
  • sum(is.na(x)) / colSums(is.na(x)) / rowSums(is.na(x)): 각각 전체 NA 개수, 열별 NA 개수, 행별 NA 개수를 계산하는 함수이다.

기초 통계 및 수학

6.1. 기초 수학 및 삼각함수

  • log(x) / log10(x): 각각 자연로그, 상용로그를 계산하는 함수이다.
  • sqrt(x): x의 제곱근을 계산하는 함수이다.
  • exp(x): 지수 함수 $e^x$를 계산하는 함수이다.
  • round(x, digit): 숫자 x를 digit 자리수까지 반올림하는 함수이다.
  • sin(x) / cos(x) / tan(x): 삼각 함수(사인, 코사인, 탄젠트) 값을 계산하는 함수이다. (입력은 라디안)

6.2. 선형대수 (행렬 연산)

  • solve(A): 정방 행렬 A의 역행렬을 구하는 함수이다.
  • det(A): 정방 행렬 A의 행렬식(determinant) 값을 구하는 함수이다.

6.3. 기술 통계

  • max(…) / min(…): 입력된 값들 중 최댓값 / 최솟값을 반환하는 함수이다.
  • sum(…, na.rm): 입력된 값들의 합계를 계산하는 함수이다. na.rm=TRUE는 NA 값을 무시하고 계산한다.
  • mean(…, na.rm): 입력된 값들의 평균을 계산하는 함수이다.
  • var(x, na.rm): 벡터 x의 표본분산을 계산하는 함수이다.
  • sd(x, na.rm): 벡터 x의 표본표준편차를 계산하는 함수이다.
  • range(…): 입력된 값들의 최솟값과 최댓값을 벡터로 반환하는 함수이다.
  • quantile(데이터, prob): 데이터의 분위수를 계산하는 함수이다. prob는 계산할 분위(예: 0.25 또는 c(0.25, 0.75))를 벡터로 지정한다.
  • cumsum(x): 벡터 x의 누적 합계를 반환하는 함수이다.
  • fivenum(x): 벡터 x의 5가지 요약 통계량(최소, 1사분위, 중앙값, 3사분위, 최대)을 반환하는 함수이다.
  • summary(x): 객체 x(벡터, 데이터 프레임, 요인 등)의 요약 통계량을 보여주는 함수이다.

6.4. 빈도 및 분포 확인

  • unique(x): 벡터 x에서 중복된 값을 제거하고 고유한 값들만 반환하는 함수이다.
  • table(x): 벡터 x의 값별 빈도수를 계산하여 테이블 형태로 반환하는 함수이다.
  • kurtosi(x): (psych) 데이터 x의 첨도(분포의 뾰족한 정도)를 계산하는 함수이다.
  • skew(x): (psych) 데이터 x의 왜도(분포의 비대칭성)를 계산하는 함수이다.
  • freq(x, plot): (descr) 데이터 x의 빈도 분석표(빈도, 비율)를 출력하는 함수이다. plot=FALSE로 막대그래프를 숨길 수 있다.

확률 및 난수

7.1. 난수 생성 및 샘플링

  • sample(n, m): 1부터 n까지의 숫자 중 m개를 무작위로 추출(기본: 비복원)하는 함수이다.
  • runif(m, startnum, endnum): startnum와 endnum 사이의 균등 분포에서 m개의 난수를 생성하는 함수이다.
  • rnorm(n, mean, sd): 평균 mean, 표준편차 sd를 따르는 정규 분포에서 n개의 난수를 생성하는 함수이다. (기본값: mean=0, sd=1)

7.2. 확률 분포

  • pnorm(x, mean, sd): 평균 mean, 표준편차 sd인 정규 분포에서 값이 x보다 작거나 같을 누적 확률 P(X ≤ x)를 구하는 함수이다.
  • qnorm(p, mean, sd): 평균 mean, 표준편차 sd인 정규 분포에서 누적 확률 p에 해당하는 값(x)을 구하는 함수이다.
  • qqnorm(x): 데이터 x가 정규 분포를 따르는지 시각적으로 확인하기 위한 Q-Q 플롯(Quantile-Quantile Plot)을 그리는 함수이다.

데이터 입출력

8.1. 데이터 불러오기

  • read.table(file, header, sep, …): 텍스트 파일(file)을 읽어 데이터 프레임으로 만드는 함수이다. header는 첫 줄이 변수명인지, sep는 구분자를 지정한다.
  • read.csv(file, …): CSV 파일을 읽어 데이터 프레임으로 만드는 함수이다. (read.table의 sep=",", header=TRUE 버전)
  • read_excel(path, sheet, …): (readxl) 엑셀 파일(path)을 읽는 함수이다. sheet로 시트를 지정할 수 있다.
  • xmlToDataFrame(file, …): (XML) XML 파일을 데이터 프레임으로 변환하는 함수이다.
  • fromJSON(txt, …): (jsonlite) JSON 형식의 텍스트(txt)를 리스트나 데이터 프레임으로 변환하는 함수이다.
  • read_csv(file, …) / read_delim(file, delim, …) / read_fwf(file, …): (readr) 각각 CSV, 특정 구분자(delim), 고정 너비 형식의 파일을 빠르게 읽는 함수이다.
  • read_lines(file, …) / read_file(file): (readr) 각각 파일을 한 줄씩 문자형 벡터로 읽거나, 파일 전체를 하나의 문자열로 읽는 함수이다.

8.2. 데이터 내보내기

  • write.csv(x, file, …): 데이터 프레임 x를 CSV 파일(file)로 저장하는 함수이다.
  • writeXLS(x, ExcelFileName, …): (WriteXLS) 데이터 프레임 x를 엑셀(.xls, .xlsx) 파일로 저장하는 함수이다. (Perl 필요)
  • write.xlsx(x, file, …): (xlsx) 데이터 프레임 x를 .xlsx 파일로 저장하는 함수이다. (Java 필요)

환경 및 유틸리티

  • ls(): 현재 작업 환경(environment)에 있는 객체(변수, 함수 등)의 목록을 보여주는 함수이다.
  • library(help=datasets): R에 내장된 데이터셋 목록을 확인하는 함수이다.
  • data(데이터셋이름): R 내장 데이터셋을 작업 환경으로 불러오는 함수이다.
  • help(데이터셋이름): R 내장 데이터셋에 대한 도움말을 보는 함수이다.
  • edit(x): 데이터 프레임 x를 편집할 수 있는 창을 여는 함수이다. (주로 x <- edit(data.frame()) 형태로 새 데이터 입력에 사용)
  • attach(데이터프레임): 데이터 프레임의 열(변수)들을 df$col 대신 col 이름만으로 직접 접근할 수 있게 하는 함수이다. (사용 후 detach() 권장)
  • detach(): attach로 연결한 데이터 프레임을 해제하는 함수이다.
  • with(데이터프레임, { 식 }): attach 없이 중괄호 {} 안에서만 데이터 프레임의 열 이름을 직접 사용할 수 있게 하는 함수이다.
  • install.packages("패키지이름"): 패키지를 다운로드 하는 함수이다.
  • library(패키지이름): 패키지를 적용하는 함수이다. 따옴표(")를 사용하지 않는다.
  • remove.packages("패키지이름"): 패키지를 제거하는 함수이다.