본문 바로가기
반응형

전체 글232

[R 코딩] 리스트안 NULL 요소 일괄제거 방법 (compact 함수) 리스트 안에 NULL 요소가 있는 경우가 있습니다. NULL 요소를 제거할 때는 purrr 라이브러리의 compact 함수를 사용합니다. purrr은 tidyverse 세계관이므로, tidyverse 패키지를 불러와도 됩니다. library(purrr) #또는 library(tidyverse) NULL 요소가 있는 리스트를 하나 정의해봅시다. > li=list(A=1,B=2,C=NULL,D=NULL,E=3) > li $A [1] 1 $B [1] 2 $C NULL $D NULL $E [1] 3 compact 함수를 적용하여 NULL 요소를 제거합시다. > compact(li) $A [1] 1 $B [1] 2 $E [1] 3 2020. 12. 17.
[R코딩] 리스트 요소를 제거하는 방법 리스트의 요소를 제거할 때는 인덱싱 후 NULL을 입력하면 됩니다. 먼저 리스트를 하나 만들어봅시다. 네 사람의 수학점수입니다. > names=c("Tim","Marry","Kitkat","Rorry") > math=c(86,78,46,23) > li=list() > list[names]=math > li $Tim [1] 86 $Marry [1] 78 $Kitkat [1] 46 $Rorry [1] 23 팀의 점수를 없애봅시다. > li["Tim"]=NULL > li $Marry [1] 78 $Kitkat [1] 46 $Rorry [1] 23 2020. 12. 16.
[R 코딩] 이름과 내용을 각각 벡터로 정의하고 리스트 만들기 이름과 내용을 각각 벡터로 정의하고 리스트를 만들 수도 있습니다. 먼저 이름과 내용을 각각 정의합시다. 다섯사람의 수학점수라고 합시다. > names=c("Tim","Marry","Kitkat","Rorry") > math=c(86,78,46,23) 비어있를 리스트를 하나 정의합시다. > li=list() 아래와 같이 이름과 내용을 리스트에 입력합시다. > li[names]=math > li $Tim [1] 86 $Marry [1] 78 $Kitkat [1] 46 $Rorry [1] 23 2020. 12. 16.
[R코딩] 리스트 인덱싱 할때, 요소 자체의 자료형으로 출력 리스트를 인덱싱할 때, 요소를 리스트 형태로 출력할 수도 있고 요소 자체의 자료형으로 출력할 수도 있습니다. 먼저 리스트를 하나 정의합시다. > li=list(v=c(1,2,3),m=matrix(1:4,2),df=data.frame(a=c(1,2,3),b=c(4,5,6))) > li $v [1] 1 2 3 $m [,1] [,2] [1,] 1 3 [2,] 2 4 $df a b 1 1 4 2 2 5 3 3 6 리스트 형태로 인덱싱 대괄호를 한겹만 사용합니다. > li[1] $v [1] 1 2 3 > li[2] $m [,1] [,2] [1,] 1 3 [2,] 2 4 > li[3] $df a b 1 1 4 2 2 5 3 3 6 자료형을 확인해봅시다. > class(li[1]) [1] "list" > class(.. 2020. 12. 16.
[R 코딩] 데이터프레임 에서 엑셀스타일, SPSS스타일 데이터 변환 (stack함수) 엑셀과 SPSS에서 통계분석을 할 때 요구되는 데이터 스타일이 다릅니다. 남녀의 키를 비교한다고 할 때, 아래와 같이 각각 데이터를 정리해주어야 합니다. 이때 사용되는 함수가 stack 함수입니다. stack 함수의 사용 엑셀스타일의 데이터프레임을 정의합시다. > df1=data.frame(male=c(177,183,162,166),female=c(172,156,162,166)) > df1 male female 1 177 172 2 183 156 3 162 162 4 166 166 stack 함수를 사용해봅시다. > stack(df1) values ind 1 177 male 2 183 male 3 162 male 4 166 male 5 172 female 6 156 female 7 162 female 8.. 2020. 12. 16.
[R 코딩] 리스트를 데이터프레임으로 만드는 stack 함수 stack 함수를 이용하면 리스트를 데이터프레임으로 만들 수 있습니다. 왜 리스트를 데이터프레임으로 바꾸는지, 어떻게 바뀌는지는 예제를 통해 이해할 수 있을것입니다. 단, 벡터나 factor가 들어있는 리스트만 가능합니다. 예를들어 한국,미국,영국 세 나라에서 다섯사람씩 모였고 이들의 나이를 리스트레 저장했다고 합시다. > li=list(kor=c(23,42,66,36,72),us=c(11,16,25,66,73),uk=c(16,5,34,25,12)) > li $kor [1] 23 42 66 36 72 $us [1] 11 16 25 66 73 $uk [1] 16 5 34 25 12 위 리스트에 stack 함수를 적용한 결과는 아래와 같습니다. > stack(li) values ind 1 23 kor 2 4.. 2020. 12. 16.
[R 코딩] 원소들의 순위를 알려주는 rank 함수 rank 함수는 각 원소의 순위 값을 벡터로 출력해줍니다. > v1=c(5,3,7,2,10,1) > rank(v1) [1] 4 3 5 2 6 1 2020. 12. 15.
[R 코딩] 원소를 역순으로 배열하는 함수 (rev) rev 함수는 벡터 원소의 순서를 역순으로 만들어줍니다. > v=c(1,2,3,4,5,6) > rev(v) [1] 6 5 4 3 2 1 행렬에도 적용가능한데, 행렬을 정의하는데 이용한 벡터를 역순으로 나열하고 벡터를 출력합니다. > m=matrix(1:6,2) > m [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > rev(m) [1] 6 5 4 3 2 1 2020. 12. 15.
[R] 데이터프레임 인덱싱을 쉽게 하는 법 (subset 함수) subset 함수를 이용하면 데이터프레임의 인덱싱을 아주 편하게 할 수 있습니다. 아래 데이터를 봅시다. airquality 라는 내장데이터입니다. > head(airquality) Ozone Solar.R Wind Temp Month Day 1 41 190 7.4 67 5 1 2 36 118 8.0 72 5 2 3 12 149 12.6 74 5 3 4 18 313 11.5 62 5 4 5 NA NA 14.3 56 5 5 6 28 NA 14.9 66 5 6 인덱싱을 해봅시다. wind 가 10 이상인 경우만 인덱싱해봅시다. airquality[airquality$Wind>=10,] subset 함수를 이용하면 아래와 같이 인덱싱이 가능합니다. subset(airquality,Wind>=10) subset.. 2020. 12. 15.
[R 내장데이터 설명] airquality 데이터 1. 설명 153일 동안의 공기 질(air quaility) 측정데이터. 2. 변수 서로 짝지어진 6개의 변수 Ozone : 평균 오존량 Solar.R : 태양 복사 wind : 평균 풍속 Temp : 최대 온도 Month : 월 Day : 일 3. 데이터 데이터 형식 : data.frame > str(airquality) 'data.frame':153 obs. of 6 variables: $ Ozone : int 41 36 12 18 NA 28 23 19 8 NA ... $ Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ... $ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ... $ Temp : int 67.. 2020. 12. 15.
[R 내장데이터 설명] PlantGrowth 데이터 1. 설명 대조군, 처리1, 처리2 의 결과를 비교함. 결과는 나무의 무게임. 2. 변수 weight 와 group 이라는 두가지 변수. weight : 연속형 group : 범주형 (ctrl,trt1,trt2) 3. 데이터 데이터 형식 : data.frame > str(PlantGrowth) 'data.frame':30 obs. of 2 variables: $ weight: num 4.17 5.58 5.18 6.11 4.5 4.61 5.17 4.53 5.33 5.14 ... $ group : Factor w/ 3 levels "ctrl","trt1",..: 1 1 1 1 1 1 1 1 1 1 ... > PlantGrowth weight group 1 4.17 ctrl 2 5.58 ctrl 3 5.18 .. 2020. 12. 15.
[R 코딩] list 를 벡터로 만들기 (unlist 함수) 벡터, 행렬, 데이터프레임을 하나씩 정의하여 list에 넣어봅시다. > v=c(1,2,3) > m=matrix(1:4,2) > df=data.frame(a=c(10,20,30),b=c(40,50,60)) 리스트에 넣은 결과입니다. > ml=list(v,m,df) > ml [[1]] [1] 1 2 3 [[2]] [,1] [,2] [1,] 1 3 [2,] 2 4 [[3]] a b 1 10 40 2 20 50 3 30 60 리스트에 unlist 함수를 적용해봅시다. > unlist(ml) a1 a2 a3 b1 b2 b3 1 2 3 1 2 3 4 10 20 30 40 50 60 벡터로 변한것을 알 수 있습니다. 2020. 12. 15.
[R 코딩] 벡터의 원소 반복 규칙 원소 반복규칙의 예시는 아래와 같습니다. > c(1,2,3)+c(1,2,3,4,5,6) [1] 2 4 6 5 7 9 길이가 다르지만 길이가 짧은 벡터가 반복되며 모자란 부분을 채웁니다. cbind 함수에도 적용됩니다. > cbind(1:2,1:5) [,1] [,2] [1,] 1 1 [2,] 2 2 [3,] 1 3 [4,] 2 4 [5,] 1 5 Warning message: In cbind(1:2, 1:5) : number of rows of result is not a multiple of vector length (arg 1) 2020. 12. 15.
[R 코딩] 벡터 중간에 데이터 삽입 벡터 중간에 데이터를 삽입할 때는 append 함수를 사용합니다. 아래와 같은 형식입니다. append(벡터,삽입할데이터,after=n) 아래와 같은 벡터가 있다고 합시다. v1=c(10,20,30,40,50) 이 벡터의 세번째와 네번째 원소 사이에 c(1,2,3)을 삽입해봅시다. > append(v1,c(1,2,3),after=3) [1] 10 20 30 1 2 3 40 50 2020. 12. 15.
[R 코딩] 벡터 여러개 합쳐서 벡터 만들기 아래와 같은 두 벡터가 있다고 합시다. > v1=c(1,2,3) > v2=c(4,5,6) 하나로 합쳐봅시다. > c(v1,v2) [1] 1 2 3 4 5 6 숫자형과 문자형이 함께 있는 경우 문자형으로 통일됩니다. > v1=c(1,2,3) > v2=c("a","b","c") > c(v1,v2) [1] "1" "2" "3" "a" "b" "c" 2020. 12. 15.
[R코딩] array 함수 없이 벡터로 배열 만드는 방법 array 함수는 보통 아래와 같이 만듭니다. > ar=array(1:4,dim=c(3,3,2)) > ar , , 1 [,1] [,2] [,3] [1,] 1 4 3 [2,] 2 1 4 [3,] 3 2 1 , , 2 [,1] [,2] [,3] [1,] 2 1 4 [2,] 3 2 1 [3,] 4 3 2 벡터에 dim 함수를 적용해도 array가 생성됩니다. dim이 2차원이면 matrix가 생성됩니다. > v1=1:18 > dim(v1)=c(3,3,2) > v1 , , 1 [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 , , 2 [,1] [,2] [,3] [1,] 10 13 16 [2,] 11 14 17 [3,] 12 15 18 단, array 함수에서 가능했던 반복규.. 2020. 12. 15.
[R 코딩] 배열,행렬 생성 시 사용 가능한 반복규칙 배열에서는 아래와 같은 생성이 가능합니다. > ar=array(c(1,2,3,4),dim=c(3,5)) > ar [,1] [,2] [,3] [,4] [,5] [1,] 1 4 3 2 1 [2,] 2 1 4 3 2 [3,] 3 2 1 4 3 전체 차원의 원소수보다 적게 입력해도, 행방향으로 반복하여 입력합니다. 행렬에서도 가능합니다. > m=matrix(c(1,2,3,4),3,5) Warning message: In matrix(c(1, 2, 3, 4), 3, 5) : data length [4] is not a sub-multiple or multiple of the number of rows [3] > m [,1] [,2] [,3] [,4] [,5] [1,] 1 4 3 2 1 [2,] 2 1 4 3 2 .. 2020. 12. 15.
[R 코딩] matrix 함수 없이 벡터에서 행렬만들기 보통 행렬은 아래와 같이 만듭니다. > m1=matrix(c(1,2,3,4),2) > m1 [,1] [,2] [1,] 1 3 [2,] 2 4 위 방법 말고 벡터를 정의한 뒤 dim 함수를 이용하여 만들 수도 있습니다. > v1=c(1,2,3,4) > dim(v1)=c(2,2) > v1 [,1] [,2] [1,] 1 3 [2,] 2 4 2020. 12. 15.
[R코딩] mode,class,typeof 함수의 차이 객체들에 적용한 결과입니다. class 함수가 가장 디테일하게 구분해줍니다. 객체 예시 mode 함수 적용 class 함수 적용 typeof 함수 숫자 3 numeric numeric double 문자열 "hi" character character character 숫자벡터 c(1,2,3) numeric numeric double 문자열벡터 c("hi","hello") character character character Factor factor(c("A","A","B") numeric factor integer 리스트 list(c(1,2),c("A)) list list list 데이터프레임 data.frame(c(1,2)) list data.frame list 행렬 matrix(c(12,3,4),2,2.. 2020. 12. 15.
R 데이터프레임 인덱싱 벡터로 출력 요약 : 데이터프레임 인덱싱에서 대괄호를 한겹 더 씌우면 문자열인 열의 경우는 'factor'로 숫자인 열의 경우는 'vector'로 출력됨 데이터프레임의 원소를 벡터로 출력하는 방법을 알아봅시다. 데이터프레임을 하나 정의합시다. > df=data.frame(Name=c("marry","tim","kate"),Height=c(163,172,168)) > df Name Height 1 marry 163 2 tim 172 3 kate 168 첫 열에 접근해봅시다. > df[1] Name 1 marry 2 tim 3 kate > class(df[1]) [1] "data.frame" 데이터프레임 형태로 출력합니다. 대괄호를 한겹 더 씌워봅시다. > df[[1]] [1] marry tim kate Levels: .. 2020. 12. 15.
R에서 MYSQL 데이터 읽는 방법 R에서 MYSQL 데이터를 읽을 때는 RMySQL 패키지를 사용합니다. 먼저 패키지를 설치하고 불러옵시다. install.packages("RMySQL") library("RMySQL") MYSQL 데이터를 읽어올 때는 dbConnect 함수를 사용합니다. 아래와 같은 형식으로 사용합니다. data 2020. 12. 15.
R 팩토리얼 함수 (factorial) 팩토리얼은 1부터 n까지의 정수를 곱하는 연산입니다. 예를들어 5!은 아래와 같습니다. 5!=1x2x3x4x5 R의 팩토리얼 함수는 factorial 입니다. > factorial(5) [1] 120 1! 부터 5!까지를 원소로 갖는 벡터를 생성할 수도 있습니다. > factorial(1:5) [1] 1 2 6 24 120 2020. 12. 14.
[R 코딩] 원소의 크기순/알파벳순으로 배열 (sort 함수) sort 함수를 사용합니다. > a=c(1,3,2,10,8,5) > sort(a) [1] 1 2 3 5 8 10 문자열에도 적용 가능합니다. 알파벳순으로 배열합니다. > s=c("a","c","e","d") > sort(s) [1] "a" "c" "d" "e" 역순으로 배열도 가능합니다. decreasing=TRUE 옵션을 설정해주시면 됩니다. > sort(a,decreasing=TRUE) [1] 10 8 5 3 2 1 2020. 12. 13.
R 통계 관련 함수 모음 모든 원소의 합 sum( ) 모든 원소의 곱 prod( ) 평균 mean( ) 중앙값 median( ) 표준편차 sd( ) 분산 var( ) 분위수 quantiile( ) 표준화 scale( ) 차분 diff( ) 최댓값 max( ) 최솟값 min( ) 최댓값 위치 which.max( ) 최솟값 위치 which.min( ) 2020. 12. 13.
[R 코딩] 객체를 검색 디렉토리에 추가 (attach 함수) attach 함수는 객체를 검색 디렉토리에 추가해줍니다. 데이터 이름을 검색 디렉토리에 추가하여 데이터 이름을 생략하고 변수에 접근할 수 있습니다. 아래는 iris 데이터를 이용한 예시입니다. iris 데이터를 검색 디렉토리에 추가하였습니다. > attach(iris) > search() [1] ".GlobalEnv" "iris" "tools:rstudio" [4] "package:stats" "package:graphics" "package:grDevices" [7] "package:utils" "package:datasets" "package:methods" [10] "Autoloads" "package:base" iris 데이터의 한 변수인 Sepal.Length에 접근해봅시다. iris$Sepal.. 2020. 12. 13.
R 불러온 패키지 목록과 경로 확인 패키지 목록만 확인 : search( ) > search() [1] ".GlobalEnv" "tools:rstudio" "package:stats" [4] "package:graphics" "package:grDevices" "package:utils" [7] "package:datasets" "package:methods" "Autoloads" [10] "package:base" 패키지 목록과 경로 확인 : searchpaths() > searchpaths() [1] ".GlobalEnv" [2] "tools:rstudio" [3] "C:/Program Files/R/R-3.6.2/library/stats" [4] "C:/Program Files/R/R-3.6.2/library/graphics" [5].. 2020. 12. 13.
R 설치 시 기본적으로 설치되는 패키지 R을 설치하면 7개의 패키지가 디폴트로 설치됩니다. > search() [1] ".GlobalEnv" "tools:rstudio" "package:stats" [4] "package:graphics" "package:grDevices" "package:utils" [7] "package:datasets" "package:methods" "Autoloads" [10] "package:base" stats graphics grDevices utils datasets methods base 입니다. 2020. 12. 13.
R 패키지 업데이트 하는 방법 패키지를 업데이트 할 때는 update.packages() 를 사용합니다. 아래와 같은 형식입니다. update.packages("패키지 이름") 2020. 12. 13.
R 함수 만들 때 결과 여러개 내보내기 벡터를 사용하여 결과 여러개 내보내기 평균, 표준편차, 길이를 출력하는 함수를 정의해봅시다. fun1=function(x){ mean=mean(x) sd=sd(x) n=length(x) result=c(mean,sd,n) result } 사용해봅시다. > fun1(1:10) [1] 5.50000 3.02765 10.00000 리스트를 사용하여 결과 여러개 내보내기 평균, 표준편차, 길이를 출력하는 함수를 정의해봅시다. fun2=function(x){ mean=mean(x) sd=sd(x) n=length(x) list(mean,sd,n) } 사용해봅시다. > fun2(1:10) [[1]] [1] 5.5 [[2]] [1] 3.02765 [[3]] [1] 10 2020. 12. 13.
[R코딩] 여러 값을 갖는 시계열 생성 (다변량 시계열) 날짜별로 복수의 값을 갖는 시계열을 생성하는 방법입니다. 행렬을 이용하여 정의하면 됩니다. 먼저 행렬을 하나 정의합시다. > mat=matrix(rnorm(30),10,3) > mat [,1] [,2] [,3] [1,] -0.176291735 0.3323575 -0.6542597 [2,] -0.928060332 -0.5374235 0.7382477 [3,] -0.003182761 1.7133234 0.9095766 [4,] 1.459855751 -1.0273686 1.7733747 [5,] 0.057111027 -2.1042541 0.7851097 [6,] -0.411653367 0.5216750 1.4261827 [7,] -0.381249441 -1.0180405 -1.0944751 [8,] -0.18.. 2020. 12. 13.
반응형