안녕하세요 구도입니다.


자세한 설명은 각 코드별로 "#" 처리 후 설명 첨삭하였으니 이를 참고해주시면 감사하겠습니다.


코드만 보고 이해하지 말고 프로그램 설치 후 직접 해보시면서 공부하시면 더 쉽게 이해하실 수 있으십니다.


*프로그램은 'R x64 3.5.1' 을 사용하였습니다*



#matrix 함수

x <- matrix(1:6, nrow=2) # 1~6 사이의 정수를 행의 수가 2인 행렬로 만듬. 원소 값은 열 기준으로 할당

x


x <- matrix(1:6, nrow=2, byrow=TRUE) # 원소 값의 할당기준이 행 기준

x


x[1,3]


names <- list(c("1행", "2행"), c("1열", "2열", "3열"))

x <- matrix(1:6, nrow=2, byrow=TRUE, dimnames=names) # 행의크기는 2 & 원소 값의 할당기준이 행 기준

x



#벡터 결합에 의한 행렬 만들기

v1 <- c(1,2,3,4)

v2 <- c(5,6,7,8)

v3 <- c(9,10,11,12)

x <- cbind(v1,v2,v3)

x


#행과 열 이름 주기

rownames(x) <- c("1행", "2행", "3행", "4행")

x

colnames(x) <- c("1열", "2열", "3열")

x


x <- rbind(v1,v2,v3)

x


rownames(x) <- c("1행", "2행", "3행")

x

colnames(x) <- c("1열", "2열", "3열", "4열")

x


#data.frame

#두 명의 고객 정보에 대한 데이터 프레임 만들기

#case 1

x <- data.frame(성명=c("홍길동", "손오공"), 나이=c(20,30), 주소=c("서울", "부산")) #두 객체에 해당하는 데이터 프레임

x


#case 2

x <- data.frame("성명"=c("홍길동", "손오공"), "나이"=c(20,30), "주소"=c("서울", "부산"))

x


#열과 행 단위 추가

x <- cbind(x, 학과=c("e-비즈", "경영"))

x


x <- rbind(x, data.frame(성명="장발장", 나이=40, 주소="파리", 학과="행정"))

x


#요소 값 보기

x[3,2]  # 3행 2열의 요소 값


x[3,]   # 3행의 모든 값


x[,2]   # 2열의 모든 값


x[-2,]  #2행을 제외한 모든 값

 

x["성명"] #"성명"요소. x[1]과 동일한 값


x$성명  #case 1. "성명"요소의 값. 


x[["성명"]] #case 2. "성명"요소의 값.


x[[1]]  # 1열 요소의 값


x[[1]][2]  # 1열 요소의 값에서 두 번째 값


x[1.2] <- 21  # 1행 2열의 값을 21로 수정

x


x[1,"나이"] <- 22  # 1행과 "나이" 열의 값을 22로 수정

x


오늘도 글 읽어주셔서 감사합니다.

안녕하세요 구도입니다.


자세한 설명은 각 코드별로 #처리 후 설명 첨삭하였으니 이를 참고해주시면 감사하겠습니다.


코드만 보고 이해하시지 마시고 프로그램 설치 후 직접 해보시면서 이해하시면 더 빠르실겁니다!


*프로그램은 'R x64 3.5.1' 을 사용하였습니다.



#벡터화02

x <- c(1,2,3,4,5)

x[2]        # 2번째 원소


x[c(1,3,5)]  #2개 이상의 원소를 지정할 때는 c() 함수사용. 1,3,5번째 원소


x[-c(2,4)]   # 2,4번째 원소 제외한 나머지 원소


x[x>2]    # 원소의 값이 2보다 큰 값들만 출력


x[x>=2 & x<=4]      # 원소의 값이 2 이상이고 4 이하인 값들만 출력


x[2] <- 20       # 2번째 원소의 값을 20으로 수정

x


x[c(3,4)] <- 15   # 3,4번째 원소들의 값을 모두 15로 수정

x


x[x<=15] <- 10   # 15 이하인 원소 값들을 모두 10으로 수정

x


x <- seq(1:10)

sum(x)

mean(x)

var(x)

sd(x)

sqrt(x)

length(x)


x <- c(1,2,-3)

abs(x)



X <- c(1,2,3,NA,4)

Y <- c(5,6,NULL,7,8,9)

Z <- c(1/0, -1/0, 0/0, 4,5)

is.na(X)  # 4번째 NA값은 TRUE로 출력

is.na(Y)  # NULL은 애초에 값 자체가 아니기에 데이터 구성요소로서 들어가지 않음

is.na(Z)  # is.na()함수는 NaN도 TRUE로 인식

is.infinite(Z)  # Inf와 -Inf가 TRUE로 출력



#리스트 함수

x <- list("홍길동", "2016001", 20, c("IT융합", "데이터 관리"))  # '홍길동'을 표현하는 리스트: 객체들의 값만 있는 경우

x


#case 1

y <- list("성명"="홍길동", "학번"="2016001", "나이"=20, "수강과목"=c("IT융합", "데이터 관리"))  # 각 원소 값에 이름이 주어짐. '성명' 원소는 '홍길동' 값 가짐

y


#case 2

y <- list(성명="홍길동", 학번="2016001", 나이=20, 수강과목=c("IT융합", "데이터 관리"))  

y


y["성명"]  # 리스트 내의 '성명' 객체(원소명과 원소 값) 출력. y[1]과 동일

y[["성명"]] #리스트 내의 '성명' 객체의 값 출력

y$성명 #y[["성명"]]과 동일한 결과



#array 함수

x <- array(1:3, dim=c(3))       # 1~3까지의 정수를 1행 3열의 1차원으로 표시. x <- seq(1:3)와 동일한 결과

x


x <- array(1:6, dim=c(2,3))       # 1~6까지의 정수를 2행 3열의 2차원으로 표시. 열 단위로 값을 우선 배치

x


x <- array(c(2,4,6,8,10,12), dim=c(2,3))   # 6개의 원소로 이루어진 벡터를 2행 3열의 2차원 배열로 표시

x


x[1,3]  # 1행 3열의 값


x[,3]   # 3열의 모든 값

 

x[,-3]   # 3열을 제외한 모든 열의 값


x[1,2] <- 20    # 1행 2열의 값을 20으로 수정

x



#리스트 + 배열 함수

names <- list(c("1행", "2행"), c("1열", "2열", "3열"))

x <- array(c(2,4,6,8,10,12), dim=c(2,3), dimnames=names)   # names 객체를 행과 열 이름으로 설정

x


x <- array(1:24, dim=c(2,3,4))   # 1~24의 정수를 3차원 배열로 생성. 2: 행의 크기(1차원 방향), 3: 열의 크기(2차원 방향), 4: 행렬 반복횟수(3차원 방향)

x


오늘도 글 읽어주셔서 감사합니다.



안녕하세요 구도입니다.


오늘부터 '빅데이터분석 및 시각화' 라는 주제로 글을 작성하려고 합니다.


자세한 설명은 각 코드별로 #처리 후 설명 첨삭하였으니 이를 참고해주시면 감사하겠습니다.


코드만 보고 이해하시지 마시고 프로그램 설치 후 직접 해보시면서 이해하시면 더 빠르실겁니다!


*프로그램은 'R x64 3.5.1' 을 사용하였습니다.




#벡터화

x <- c(80, 85, 70)  # 홍길동의 국어, 수학, 영어 성적을 벡터로 저장

x


c(80, 85, 70) -> x  # 동일한 결과이지만 '->' 보다는 '<-'의 사용을 권장함

x



x <- c(80)   # 홍길동의 국어 성적

x


x <- 80      # 처음과 동일한 결과. 단일 값인 경우, 주로 c()를 생략하여 사용함

x



#연산자

#1. 사칙연산


x <- 5+2    # 더하기

x <- 5/3   # 나누기

x <- 5^2   # 거듭제곱

x


x <- 5 %% 3   # 5를 3으로 나눌 때의 나머지

x


x <- 5 %/% 3  # 5를 3으로 나눌 때의 몫

x


x <- c(1,2,3,4)

y <- c(2,3,4,5)

z <- c(1,2)


w <- x+y  # x와 y 원소의 수가 같은 경우, 각 순서의 원소끼리 더함

w


w <- x+5  # 각 원소에 모두 5를 더함

w <- y/2  # 각 원소에 모두 2로 나누어짐

w



w <- x+z  # x 원소 개수가 z 원소의 2배수이므로, z의 (1,2)가 2번 반복된 (1,2,1,2)가 x에 더해짐. 배수 관계가 아니면 오류 발생 

w


w <- x/z  # x 원소 개수가 z 원소의 2배수이므로, z의 (1,2)가 2번 반복된 (1,2,1,2)에 대해 x로 나눠짐. 배수 관계가 아니면 오류 발생 

w


w <- z/x   # x 원소 개수가 z 원소의 2배수이므로, z의 (1,2)가 2번 반복된 (1,2,1,2)에 대해 x로 나눈 결과. 배수 관계가 아니면 오류 발생 

w


x <- c(1,2,3)  # 각 원소가 동일한 데이터 유형(숫자)인 경우

x


y <- c("A", "B", "C") # 각 원소가 동일한 데이터 유형(문자)인 경우

y


y <- c("A", 1,2) # 문자와 숫자가 혼재되어 있으면, 숫자는 문자형으로 변환

y


z <- y+1 # 문자와 숫자의 합은 오류

z


#2. 비교연산자


x <- 5<3  # 5는 3보다 작기 때문에 FALSE

x


y <- c(10,20,30)

z <- y<=10  #y의 각 원소가 10 이하이면 TRUE, 아니면 FALSE

z



#3. 논리연산자


x <- TRUE

y <- FALSE

x|y


x&y 


x <- 3

!x


isTRUE(y)


z <- c(TRUE, FALSE, FALSE)

z|y


#벡터생성함수

#1. seq()

x <- seq(1,10)  # 1~10까지 정수. 디폴트(by=1)는 1 간격으로 생성

x

x <- 1:10  # seq() 사용했을 때와 동일한 결과

x


x <- seq(10,1)

x

y <- 10:1

y


x <- seq(1,10,by=3)  # 1부터 3씩 증가하는 10 이하의 정수

x



y <- seq(1,10,length.out=5)  # 1~10 사이의 같은 간격으로 하는 5개의 숫자

y


#2. rep()

x <- c(1,2,3)

rep(x,times=2)  # x 벡터를 2번 반복


rep(x, each=2)  # x 벡터의 각 원소를 2번 반복


오늘도 글 읽어주셔서 감사합니다:)

12

+ Recent posts