[R_bigdata] R에서 유용하게 사용되는 함수들 (자료구조)

데이터 구조를 활용할 때 유용하게 사용할 수 있는 함수들이다.
목차




#day02_11_useful.R
#데이터 구조와 같이 자주 사용되는 함수들

vec1 <- c(1:3)
vec2 <- c(4:6)
vec3 <- c(1:4)

#합치기 - union()
union(vec1,vec2) #1 2 3 4 5 6
union(vec1,vec3) #1 2 3 4 : 중복된 결과를 제외하고 합쳐진다.
union(vec2,vec3) #4 5 6 1 2 3 : 순서 나열은 되지 않는다.
union(vec3,vec2) #1 2 3 4 5 6
c(vec1,vec3) # 1 2 3 1 2 3 4 : 중복된 결과를 포함하여 합쳐진다.

#차집합 - setdiff()
#setdiff(데이터1,데이터2)를 사용하면 데이터1에서 데이터2의 값을 제외한 결과가 출력된다.
setdiff(vec3,vec1)

#교집합 - intersect()
intersect(vec3,vec2)

#ctrl+v
#paste(데이터1, 데이터2 ,,,구분자) : 복사하기
paste('a','b') #"a b" 빈칸이 들어간다. 여기서 빈칸은 구분자(separator)이다.
paste('a','b',sep=',')
paste('a','b',sep='')
paste0('a','b') #0이 붙은 paste 함수는 공백없는 구분자를 가지는 함수이다.

#실습
#x변수의 각 자리에 x1, x2, x3, x4, x5 가 조회될 수 있도록paste를 이용해라
rep('x',5)
x<-c(rep('x',5))
paste0(x,c(1:5)) #1,2,3,4,5를 순차적으로 넣어줄 수 있는 방법은 무엇인가. c()를 이용하는 방법


#벡터연산
a<-1:6
a*5

#merge(): 기준에 따라 데이터를 결합하는 함수
#-database의 join문과 결과가 같다.
#inner join(교집합), left outer join(기준에 따라서 반대쪽의 값이 없어도 합쳐지는 형태),full outer join(합집합)

name <- c('김유신','강감찬','홍길동','이순신')
qty <- c(100,50,80,20)
df_buy_1<- data.frame(name,qty)
df_buy_1
name2 <- c('김유신','김소월','이순신','맹자','공자')
owner <- c(TRUE,FALSE,FALSE,FALSE,TRUE)
df_buy_2 <- data.frame(name=name2,owner)
df_buy_2

#두 데이터를 기준값에 따라서 교집합으로 구하기
merge(df_buy_1,df_buy_2,by='name') #by= 기준, 여기서는 name

#left(right) 조건의 데이터는 모두 보이게 조회
merge(df_buy_1,df_buy_2,all.x = TRUE) #가령 x는 df1의 데이터를 모두 보이도록
merge(df_buy_1,df_buy_2,all.y = TRUE) #y는 df2의 데이터를 모두 보이도록 조회한다.


#full 조건은 모든 데이터를 다 보여라 : 합집합
merge(df_buy_1,df_buy_2,all=TRUE,by='name')
#데이터 값이 없는 부분은 NA로 표시된다. 예를들어 df1의 owner 부분이나, df2의 qty부분은 NA로 나타나게 될 것이다.

#문자만들기
letters #벡터형태의 데이터
a<-letters[1:3]
a
LETTERS

#평균, 중앙값
#데이터에 따라서 평균을 사용할 지와 중앙값을 사용할지는 다릅니다.
a <- 1:50
mean(a)   #평균
median(a) #중앙값

#데이터를 위, 아래의 6개만 조회
m<- c(1:1000)
head(m)
tail(m)

#데이터의 길이 확인
#length(데이터)
length(m)

#랜덤값 생성하기
#landom nubmer
#sample()
a<-sample(45,6)

#sort(): 정렬하기
#오름차순 : 값이 올라가는 형태로 정렬
#내림차순 : 값이 내려가는 형태로 정렬
sort(a)
sort(a,decreasing = TRUE)

#R에서 데이터 시각화 하는 방법
a<-1:10
b<-c(5:50)
b

hist(a)
hist(b)

plot(a)
plot(b)

댓글