# I. 변수 ----
## 1. 변수값 할당 ----
a <- 2
aa <- 5^10
AA <- 10
a+aa
a*AA
aa <- bb <- cc <- 10000
aa;bb;cc
## 2. 여러개의 값을 변수에 할당 <c(), seq()> ----
ls() # 메모리에 선언되어 있는 변수 리스트
ls.str() # 변수 리스트 + str()
rm(cc) # 메모리에서 변수 삭제
rm(list=ls()) # 메모리에서 모든 변수 삭제
# c()
?c()
bb <- c(10,20,30,40,50)
cc <- c(10:100)
bb;cc
# seq()
#+ seq(from, to, by=+-, length.out)
?seq()
dd <- seq(10, 50, by=10);dd
ee <- seq(10, 50, by=1);ee
ff <- seq(10, 100, by=10);ff;length(ff)
gg <- seq(100, by=-5);gg;length(gg)
ff
gg
ff+gg
# Q. Why Warning message?
# 작은 dts 길이 * n = 큰 dts 길이
d1 <- c(1:10);d1
d2 <- c(1:3);d2
d1+d2
## 3. 문자변수 할당 ----
h1 <- "aaa";h1;length(h1)
h2 <- 'aaa';h2
h3 <- "hello R~!";h3;length(h3)
h4 <- c("hello", "R", "~!");h4;length(h4)
# 문자 붙이기(err)
h1+h2
h2+h4
# paste(): 문자 붙이기 함수
paste(h1,h2)
paste(h1,h2) |> length()
paste(h2,h4)
paste(h2,h4) |> length()
## 4. 반복문자값 변수생성 <rep()> ----
?rep()
rep(1:5)
rep(1:5, each=3)
rep(1:5, each=3, length.out=20)
rep(1:5)
rep(1:5, each=2)
rep(1:5, each=2, times=3)
rep(1:5, each=2, times=3, length.out=100)
length(rep(1:5, each=2, times=3, length.out=100))
rep(1:5, each=2, times=3, length.out=100) |> length()
## 5. 집합연산자를 활용한 변수 선언 ----
#+ 중복된 데이터는 제거후 return
set1<- seq(10, 100, by=2);set1;length(set1) # 46개
set2<- seq(30, 150, by=4);set2;length(set2) # 31개
# 합집합, union()
u_set <- union(set1,set2)
length(u_set) # 59개
# 교집합, intersect()
in_set <- intersect(set1,set2);in_set
length(in_set) # 18개
# 차집합-1, set1-set2
d_set1 <- setdiff(set1,set2);d_set1
length(d_set1) # 28개 (only set1)
# 차집합-2, set2-set1
d_set2 <- setdiff(set2,set1);d_set2
length(d_set2) # 13개 (only set2)
# = (value만 비교)
setequal(set1, set2)
setequal(c(1,2,3), c(3,3,3,2,2,3,1,1,3,2))
# is.element()는 %in% 와 유사하다
set1
is.element(9, set1)
is.element(1, c(1,2,3))
9 %in% set1
1 %in% c(1,2,3)
"ggplot2" %in% installed.packages()
"dplyr" %in% installed.packages()
"yujin" %in% installed.packages()
## 6. 데이터 정렬을 통한 변수생성 ----
# 0-1) dts 생성한 후, 변수 할당
set.seed(12)
a <- sample(1:100, 15);a;length(a)
# 0-2) NA(결측치) 추가
#+ a[index] # a가 dts이라는 의미
#+ # a에서 index 순번째 data를 조회
#+ a[행, 열] # a[where, select]
#+ a() # a는 함수다는 의미
search()
class(a);a;a[2:5]
my_mpg <- ggplot2::mpg
class(my_mpg)
names(my_mpg)
dim(my_mpg)
my_mpg[234,1]
my_mpg[234,4]
View(my_mpg)
# 4, 7, 12번째 NA처리
a[c(4,7,12)] <- NA
a
# 1) rank() # NA 포함
#+ return : 데이터의 순위
?rank()
a
rank(a) # 1등이 가장 작음
rank(-a) # 1등이 가장 큼
# NA 표기
a
rank(a)
rank(a, na.last = T) # default 옵션 (NA는 맨뒤로)
rank(a, na.last = F) # NA는 맨앞으로
rank(a, na.last = "keep") # NA는 순위 없앰
rank(a, na.last = NA) # NA는 안보이게
# 2) sort() # NA 미포함
#+ return : 정렬된 data
a
sort(a) # 오름차순
sort(a, decreasing = T) # 내림차순
# NA표기
sort(a,na.last = T)
sort(a,na.last = F)
sort(a, decreasing = T, na.last = T) # 내림차순
sort(a, decreasing = T, na.last = F) # 내림차순
length(a)
length(sort(a))
sort(a) |> length()
# 3) order # NA포함
#+ return : 정렬된 데이터 기준 원자료의 인덱스
a;rank(a);sort(a);order(a)
# 역정렬 관련
a;sort(a, decreasing = T);order(-a)
# NA
a;sort(a);order(a,na.last = T) # NA 맨뒤로
a;sort(a);order(a,na.last = F) # NA 맨앞으로
a;sort(a);order(a,na.last = NA) # NA 안보임
# Q. r2[order(r2)] == sort(r2)
r2 <- rep(1:5, each=2, times=3);r2
r2[order(r2)]
sort(r2)
#
r2;order(r2)
paste(order(r2))
paste(order(r2), collapse = ",")
r2[c(1,2,11,12,21,22,3,4,13,14,23,24,5,6,15,16,25,26,7,8,17,18,27,28,9,10,19,20,29,30)] # == sort(r2)
r2[order(r2)]
## 7. named vector ----
data(package="datasets")
?islands
head(islands, 10)
tail(islands, 15)
class(islands)
View(islands)
View(a)
# 히스토그램
hist(islands) # (인수), 인수는 숫자
ggplot2::qplot(islands)
# named vector-1
d2 <- c(a=1,a=1,a=1,b=2,b=2,c=3);d2
View(d2)
# named vector-2
d3 <- c(1,1,1,2,2,3);d3
names(d3) <- c("진우","유진", "희진", "민서", "세현", "재은")
d3;View(d3)
## 8. 범주형 데이터(factor) ----
print("==== 수치형 data ====")
aa <- c(1,1,1,2,2,3,4,5,6,5)
aa
class(aa)
levels(aa) # levels()의 상대는 범주형 data
nlevels(aa)
is.factor(aa)
rank(aa) |> class()
sort(aa)
order(aa)
print("==== 범주형 data ====")
# is.****() : 확인하는 함수
# as.****() : data type 변환하는 함수
faa <- as.factor(aa)
faa
length(faa)
class(faa)
nlevels(faa) # 카테고리 수를 리턴
is.factor(faa)
levels(faa) # 카테고기를 리턴
levels(faa)[2]
sort(levels(faa), decreasing = T)
# 문자 범주형 data
#+ 심다가
sim <- c("심","다","가")
class(sim)
is.factor(sim)
# factor 변환 및 확인 # as.***, is.***
is.factor(as.factor(sim))
class(as.factor(sim))
mode(as.factor(sim))
typeof(as.factor(sim))
## 9. Data Object Type ----
# 1-1) vector-명목형 factor
f.nom <- factor(c("a","b","a","c","e","e","f"))
class(f.nom);mode(f.nom);typeof(f.nom);str(f.nom)
is.factor(f.nom) # T
is.ordered(f.nom) # F: 순서형 factor 확인
# 1-2) vector-순서형 factor
f.ord <- ordered(c(3,2,1,1,1,4,6,3,2))
class(f.ord);mode(f.ord);typeof(f.ord);str(f.ord)
is.factor(f.ord) # T
is.ordered(f.ord) # T
# 2) 행렬(matrix)
v2 <- c(1:20);v2
v2 |> length()
View(v2)
# matrix(dts, nrow, ncol, byrow=F)
m1 <- matrix(v2, 4, 5);m1
m2 <- matrix(v2, 4, 5, byrow=T);m2
matrix(v2, 4, 5)
matrix(v2, 4, 10)
# 3) 배열(array)
v4 <- rep(1:100, length.out=20)
rep(1:100, length.out=20) |> length()
# c(1:100, length.out=20)
# c(1:100, length.out=20) |> length()
# 2차원
v4
?array
array(v4, dim=c(10,4))
array(v4, dim=c(10,4)) |> class()
array(v4, dim=c(10,4)) |> typeof()
array(v4, dim=c(10,4)) |> View()
# 3차원
v4
# array(v4, dim=c(10,4,2,2))
ar <- array(v4, dim=c(10,4,2))
array(v4, dim=c(10,4,2)) |> class()
array(v4, dim=c(10,4,2)) |> typeof()
# 조회
#+ dts[행, 열, 층]
ar
ar[,3,] # 3열만
ar[4,,] # 4행만
ar[4,4,] # 4행 4열
ar[4,4,2] # 4행 4열 2층
# 4) 데이터프레임(data.frame)
#+ RDB의 table, 엑셀의 sheet
c1 <- sample(50:100, 15);c1
c2 <- sample(50:100, 15, replace = T);c2
df <- data.frame(c1,c2)
dim(df)
# 5) 리스트(list)
sem <- seq(10, 100, by=5)
sem |> length()
class(sem)
sem_list <- list(sem)
class(sem_list)
View(sem)
View(sem_list)
# list 추가
list_all <- list(sem_list, ar, df, m1, m2, c1, c2);list_all
View(list_all)
# 고민??
class(list_all)
list_all[1]
list_all[[1]]
#
sample(1:5,1)
# ■ 조별 과제 제출 가이드 (jwc@softsociety.net)
# 주제: 데이터분석 설계표 구성
# 업무분장: 조원별 수행 업무
#
# 1) 데이터 분석 프로젝트 주제
# 2) 데이터 분석 가정(가설에 대한 한계점 지원)
# 3) 가설설정
# 4) 분석대상 변수 구성
#+ 각 변수별 설명
# 5) 분석결과로 도출하고 싶은 내용 ***
# 6) 수집데이터 출처
# 7) 분석에 활용될 기법(상세히, 활용하고 싶은 내용)
# + 전처리 방법 리스트
# + 시각화 방법 리스트
# + 머신러닝 / 딥러닝 학습방법 리스트
# 8) 분석결과 추정(가상)
R Scripts : 2. 함수 (Function) (0) | 2023.10.06 |
---|---|
RF7_Test dataset sample (0) | 2023.09.15 |
RF6_데이터분석및가공 (0) | 2023.08.10 |
댓글 영역