본문 바로가기
AI 관련/ADsP, ADP

R 기초 함수와 문법 - 2

by 팀장일기 2021. 4. 24.

■ 벡터, 리스트, 행렬 다루기 

기능 R코드 비고
벡터에 데이터 추가 v<-c(v,newltems)
v[length(v)+1]<-newltem
 
벡터에 데이터 삽입 append(vec,newvalues,after=n)  
요인 생성 f<-factor(v), v:문자열 또는 정수 벡터
f<-factor(v,lecels)
 
여러 벡터를 합쳐 하나의 벡터와 요인으로 만들기  comb<-stack(list(v1=v1,v2=v2,v3=v3))  
벡터 내 값 조회 벡터[c(1,3,5,7)]
벡터[-c(2,4)]
벡터 내 1,3,5,7번째값 조회
벡터 내 2.4번째 값을 제외하고 조회
리스트 list(숫자,문자,함수) list 함수의 인자로는 숫자, 문자, 함수가 포함.
리스트 생성하기 L<-list(x,y,z)
L<-list(valuename1=data, valuename2=data, valuename3=data)
L<-list(valuename1=vec, valuename2=vec, valuename3=vec)
 
리스트 원소 선택 L[[n]] : n번째 원소, 
L[c(n1,n2,n3,⋯,nk):목록
 
이름으로 리스트 원소 선택 L[["name"]],
L$name
 
리스트에서 원소 제거 L[["name"]]<-NULL  
NULL 원소를 리스트에서 제거 L[sapply(L,is.null)<-NULL
L[L==o]<-NULL,
L[is.na(L)]<-NULL
 
행렬 matrix(data, 행수, 열수)
a<-matrix(data,2,3),d<-matrix(0,4,5)
e<-matrix(1:20,4,5)
data 대신 숫자를 입력하면 행렬의 값이 동일한 수치값 부여
차원 dim(행렬), dim(a) a행렬의 차원은 2행 3열
대각(diagonal) diag(행렬),diag(b) b 행렬의 대각선의 값 반환
전치(transpose) t(행렬), t(a) a 행렬의 전치행렬을 반환
solve(matrix)  
행렬의 곱 행렬%*%t(행렬), a%*%t(a) 행렬의 곱
행이름 부여 rownames(a)<-c("행이름1","행이름2","행이름3") 행의 이름 할당
열이름 부여 colnames(a)<-c("열이름1", "열이름2") 열의 이름할당
행렬의 연산 +,-  f+f,f-f
f+1,f-1
행렬간의 덧셈, 뺄셈
행렬 상수간 덧셈, 뺄셈
행렬의 연산 * f%*%f
f*3
행렬 간의 곱
행렬 상수 간 곱
행렬에서 행, 열 선택하기 vec<-matrix[1, ]
vec<-matrix[ ,3]
 

 

 

■ 벡터, 리스트, 행렬 다루기 

기능 R코드 비고
데이터프레임 data.frame(벡터,벡터,벡터) 벡터들로 데이터셋 생성
레고드 생성 new<-data.frame(a=1,b=2,c=3,d="a") 레코드 생성시 숫자, 문자를 함께 사용가능
열데이터(변수)로 데이터 프레임 만들기 dfm<-data.frame(v1,v2,v3,f1,f2)
dfm<-as.data.frame(list,of.vectors)
 
데이터셋 행결합 rbind(dfm1,dfm2)
newdata<-rbind(newdata.new)
두 데이터 프레임을 행으로 결합
데이터셋 열결합 cbine(dfm1,dfm2)
cbind(newdata,newcol)#newcol=1:150
두 데이터프레임을 열로 결합
데이터 프레임 할당 N=1,000,000
dtfm<-data.frame(dosange=numeric(N),
lab=character(N),respones=numeric(N))
 
데이터 프레임 조회1 dfrm[dfrm$gender="m"] 데이터셋내 성별이 남성만 조회
데이터 프레임 조회2 dfrm[dfrm$변수1>4&dfrm$변수2>5,c(변수3,변수4)] 데이터셋의 변수 1과 변수2의 조건에 만족하는 레코드의 변수 3과 변수4 만을 조회
데이터 프레임 조회3 dfrm[grep("문자",dfrm$변수1,ignore.case=T),c("변수2,변수3")] 데이터셋의 변수1 내 "문자"가 들어있는 케이스들의 변수2, 변수3 값을 조회
데이터셋 조회 subset(dfrm, select=변수, subset=변수>조건) 데이터셋의 특정변수의 값이 조건이 맞는 변수셋 조회, subset은 벡터와 리스트에서도 선택가능 
데이터 선택 lst[[2]],lst1[2],lst1[2,],lst1[,2]
lst1[["name"]], lst1$name,
lst1[c("name1","name2",⋯,"name k")]
 
데이터 병합 merge(df1,df2,by="df1과 df2의 공통 열이름") 공통변수로 데이터셋 병합
열 네임 조회 colnames(변수) 변수의 속성들을 조회
행, 열 선택 subset(dfm,select=열이름)
subset(dfm,select=c(열이름1, 열이름2,⋯,열이름n)
subset(dfm,select=dufdlfma, subset=(조건))
열이름에 ""표시안함, 조건에 맞는 행의 열 자료만 선택
이름으로 열 제거 subset(dfm,select=-"열이름")
열 이름 바꾸기 colnames(dfm)<-newnames
NA 있는 행 삭제 NA_cleaning<-na.omit(dfm)  
데이터 프레임 두개 합치기 열(cbind_dfm<-cbind(dfm1,dfm2)
행(rbind_dfm<-rbind(dfm1,dfm2)
(유의사항1)
cbind는 행의 개수가 동일해야함.
-recycling rule
(유의사항2)
rbind는 열의 개수와 열의 이름이 동일해야함. 
두 개의 데이터 프레임을 동일한 변수 기준으로 합치기  merge(dfm1,dfm2,by="T_name")
merge(dfm1,dfm2,by="T_name",all=T)
 

 

 

■ 자료형 데이터 구조변환 

기능 R코드
데이터 프레임의 내용에 쉽게 접근하기 with(dfm,expr)
attach(dfm)
detach(dfm)
자료형 변환하기 as.charater()
as.complex()
as.numeric() 또는 as.double()
as.integer()
as.logical()
데이터 구조 변환하기 as.data.frame()
as.list()
as.matrix()
as.vector()

 

■ 데이터 구조 변경 

벡터 → 리스트 as.list(vec) 행렬 →벡터 as. vector(mat)
벡터 → 행렬
1열짜리 행렬 : 
cbind(vec) 또는 as.matrix(vec)
1행짜리행렬 :rbind(vec)
n x m 행렬 : matrix(vec, n,m) 
행렬 →리스트 as.list(mat)
벡터 → 데이터프레임 1열짜리 데이터 프레임: as. data.frame(vec)
1행짜리 데이터 프레임: as.data.frame(rbind(vec))
행렬 →데이터프레임 as.data.frame(mat)
리스트 → 벡터 unlist(lst) 데이터 프레임 → 벡터 1열짜리 데이터 프레임: 
dfm[[1]] or dfm[,1]
1행짜리 데이터 프레임:
dfm[1,] 
리스트 → 행렬 1열짜리 행렬 : as.matrix(lst)
1행짜리행렬 : as.matrix(rbind(lst))
n x m 행렬 : matrix(lst,n,m)
데이터 프레임 → 리스트 as.list(dfm)
리스트 → 데이터프레임 목록 원소들이 데이터의 열이면:
as.data.frame(lst)
리스트 원소들이 데이터의 행이면:
rbind(obs[[1]],obs[[2]])
데이터 프레임 → 행렬  as.matrix(dfm)

 

■ 벡터의 기본연산 

기능 R코드 비고
벡터연산 벡터1 + 벡터2
벡터2 - 벡터2
벡터1 * 벡터2
벡터1 ^ 벡터2
덧셈연산
뺄셈연산
곱셈연산
승수연산
함수적용 sapply(변수, 연산함수)
sapply(a,log)
연산 및 적용함수를 통해 변수에 적용
파일저장1 write.csv(변수이름, "파일이름.csv")
write.csv(a,"test.csv")
파일로 저장
파일저장2 save(변수이름, file="파일이름,Rdata")
save(a,file="a.Rdata")
R파일로 저장
파일읽기 read.csv("파일이름.csv")
read.csv("a.csv")
파일읽기
파일 불러오기 load("파일.R")
load("a.R")
source("a.R")
R파일 불러오기
데이터 삭제 rm(변수)
rm(list=ls(all=TRUE))
변수를 메모리에서 삭제
모든 변수를 메모리에서 삭제

 

 

■ 그 외 간단한 함수

기능  R코드 비고
데이터 불러오기 data()
data(데이터셋)
R에 내장된 데이터셋 리스트를 보여줌
데이터셋을 불러들임
데이터셋 요약 summary(데이터셋) 데이터 셋 변수 내용을 요약 
데이터셋 조회 head(데이터셋) 6개 레코드까지 데이터 조회
패키지 설치 install.packages("패키지명") 패키지를 설치
패키지 불러오기 library("패키지 명") 패키지를 불러들임
작업종료 q() 작업을 종료
워킹디렉토리 지정 setwd("~/") R데이터, 파일을 로드하거나 저장할 때 워킹 디렉토리를 지정

이 글과 함께 읽으면 좋은글 

R기초함수와 문법-1

 

R 기초 함수와 문법 - 1

■ 기초 기능 R코드 비고 출력하기 print() : 출력형식을 지정할 필요없음. 한번에 하나의 객체만 출력 cat() : 여러 항목을 묶어서 연결된 결과로 출력, 복합적 데이터 구조 (행렬, list 등) 를 출력 할

chinggu2000.tistory.com

 

R기초함수와 문법-3

 

R 기초 함수와 문법 - 3

■데이터 변형 _ 주요 코드 기능 R코드 비고 요인으로 집단 정의 v w f 벡터를 여러집단으로 분할 (벡터의 길이만 같으면 됨) groups groups groups 두 함수 모두 벡터로 된 리스트를 반환 데이터 프레임

chinggu2000.tistory.com

 

'AI 관련 > ADsP, ADP' 카테고리의 다른 글

ADsP 1과목 공부_1  (0) 2021.05.07
ADsP 2과목 공부 _1  (0) 2021.05.06
ADsP 3과목 공부 _1  (0) 2021.05.04
R 기초 함수와 문법 - 3  (0) 2021.04.24
R 기초 함수와 문법 - 1  (0) 2021.04.24

댓글