본문 바로가기
반응형

R코딩33

R 에서 정수 각각의 숫자를 쪼개서 벡터로 변형 설명은 주석으로 대신합니다. 아래는 자세히 설명한 코드입니다. a = 12345 #a르 문자열로 인식한 뒤 하나씩 쪼갬 a_1=strsplit(as.character(a), "") # 리스트라서 벡터로 만들어줌 a_2=a_1[[1]] #다시 벡터로 만듬 a_3=as.numeric(a_2) 아래는 한줄로 끝낸 코드입니다. a = 12345 a_split=as.numeric(strsplit(as.character(a), "")[[1]]) 아래는 실 사용 결과입니다. > a = 12345 > a_split=as.numeric(strsplit(as.character(a), "")[[1]]) > a_split [1] 1 2 3 4 5 2021. 7. 12.
[R 기초] 무한반복하는 repeat{} 문 repeat문은 대괄호 안의 문장을 무한반복합니다. 따라서 보통 break 문과 함께 사용합니다. > i=1 > repeat{ + print(i) + i=i+1 + if (i==5) break + } [1] 1 [1] 2 [1] 3 [1] 4 2020. 12. 26.
[R 기초] 스위치를 켜듯 사용하는 switch 문 switch 문은 아래와 같은 형식으로 사용합니다. switch(입력값, 조건1 = 명령문1, 조건2 = 명령문2, ... 조건k = 명령문k) 예를 들어봅시다. switch 문이 들어있는 함수를 하나 정의합시다. myfun=function(x){ switch(x,A="hi",B="hello",C="안녕","몰라") } "몰라"는 조건이 없습니다. 조건없이 입력된 명령문은 정의되지 않는 명령어일때 실행됩니다. 함수를 사용해봅시다. > myfun("A") [1] "hi" > myfun("B") [1] "hello" > myfun("C") [1] "안녕" > myfun("D") [1] "몰라" > myfun("E") [1] "몰라" 2020. 12. 26.
[R기초] if와 else 문을 한줄로 쓸 경우 대괄호는 필요없다. if문과 else 문을 한줄에 쓸 경우 대괄호 없이 쓸 수 있습니다. > x=3 > if (x==3) print(x) else print(x+3) [1] 3 2020. 12. 26.
[R코딩] 행렬에서 통계량과 각 원소의 편차 (sweep) sweep 함수는 통계량과 각 원소의 차이를 반환해줍니다. 디폴트가 '차이'이고, 다른 계산값도 가능합니다. sweep(행렬, 방향, 통계량, FUN="-") FUN은 어떤 연산을 할지 결정합니다. 디폴트는 - 입니다. 각 원소에서 통계량을 빼는 것입니다. 예를 들어봅시다. 행렬을 하나 정의합시다. > m=matrix(1:12,3) > m [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 sweep 함수를 이용하여 각 원소에서 행렬의 최댓값을 빼봅시다. 이때는 방향이 따로 없기 때문에 1이나 2를 입력해도 결과가 동일합니다. > sweep(m,1,max(m)) [,1] [,2] [,3] [,4] [1,] -11 -8 -5 -2 [2,] -10 .. 2020. 12. 25.
[R코딩] 서브그룹 평균을 각 원소 값으로 반환 (ave) 사용 형식 : ave(종속변수, 독립변수(범주형)) 반환 결과 : 벡터 아래와 같은 데이터프레임이 있다고 합시다. A,B,C 반 학생의 수학점수입니다. > dt=data.frame(score=c(75,73,79,83,85,92,99,100,72,83),class=c('A','A','A','B','B','B','C','C','C','C')) > dt score class 1 75 A 2 73 A 3 79 A 4 83 B 5 85 B 6 92 B 7 99 C 8 100 C 9 72 C 10 83 C 각 반별로 따로 평균을 구하고, 각 값을 해당 평균값으로 바꾸고 싶습니다. 이럴 경우 사용하는 함수가 ave 함수입니다. > ave(dt$score,dt$class) [1] 75.66667 75.66667 75... 2020. 12. 25.
[R 내장데이터 설명] warpbreaks 데이터 1. 설명 실의 종류와 실의 장력에 따른 warp breaks 입니다. warp breaks 는 실의 끊김 횟수라고 합니다. 2. 변수 독립변수 : 실의 종류(범주형), 실의 장력(범주형) 종속변수 : warpbreaks (연속형) 3. 데이터 데이터 형식 : data.frame > str(warpbreaks) 'data.frame':54 obs. of 3 variables: $ breaks : num 26 30 54 25 70 52 51 26 67 18 ... $ wool : Factor w/ 2 levels "A","B": 1 1 1 1 1 1 1 1 1 1 ... $ tension: Factor w/ 3 levels "L","M","H": 1 1 1 1 1 1 1 1 1 2 ... > warpbre.. 2020. 12. 25.
[R코딩] 서브그룹의 통계량을 구해주는 by 함수 사용 형식 : by(종속변수, 범주형 독립변수, 적용함수) 출력 결과 : by형 객체 아래와 같은 데이터프레임이 있다고 합시다. A,B,C 반 학생의 수학점수입니다. > dt=data.frame(score=c(75,73,79,83,85,92,99,100,72,83),class=c('A','A','A','B','B','B','C','C','C','C')) > dt score class 1 75 A 2 73 A 3 79 A 4 83 B 5 85 B 6 92 B 7 99 C 8 100 C 9 72 C 10 83 C 각 반별로 따로 평균을 구하고 싶다고 합시다. 이런 경우 사용하는 함수가 by 함수입니다. 아래와 같이 사용합니다. > by(dt$score,dt$class,mean) dt$class: A [1] .. 2020. 12. 25.
[R코딩] 서브그룹의 통계량을 구해주는 aggregate 함수 사용 형식 : aggregate(종속변수, by=범주형 독립변수, 적용함수) 출력 결과 : 데이터프레임 범주형 독립변수는 리스트 형태로 입력합니다. 예를 들어봅시다. 아래와 같은 데이터프레임이 있다고 합시다. A,B,C 반 학생의 수학점수입니다. > dt=data.frame(score=c(75,73,79,83,85,92,99,100,72,83),class=c('A','A','A','B','B','B','C','C','C','C')) > dt score class 1 75 A 2 73 A 3 79 A 4 83 B 5 85 B 6 92 B 7 99 C 8 100 C 9 72 C 10 83 C 각 반별로 따로 평균을 구하고 싶다고 합시다. 이런 경우 사용하는 함수가 aggregate 함수입니다. 아래와 같이 .. 2020. 12. 25.
[R] apply/ lapply/ sapply/ tapply/ mapply 함수 한눈에보기 함수이름 예시 역할 apply apply(x,1,mean) - 행렬, 배열, 데이터프레임에 사용 - 행방향 또는 열방향으로 함수 일괄 적용 lapply lapply(x,mean) - 리스트에 적용 - 리스트 형태로 결과 반환 - 행렬, 벡터에도 적용가능한데 의미는 없음 sapply sapply(x,mean) - 리스트에 적용 - 행렬 형태로 결과 반환 - 행렬, 벡터에도 적용가능한데 의미는 없음 tapply tapply(vec,fac,mean) - 입력된 벡터를, 요인 수준에 따라 함수 적용 mapply mapply(rep,times=4,li) - 사용할 함수의 input이 여러개인 경우 사용 - 나머지는 sapply 와 동일(리스트에적용) - 행렬, 벡터에도 적용가능한데 의미는 없음 1. apply 함.. 2020. 12. 24.
[R코딩] 한 벡터를 정렬 할 때, 그 순서로 다른 벡터 정렬하기 한 벡터를 크기 순으로 정렬할 때, 연관된 다른 벡터도 함께 정렬해야하는 경우 사용하는 방법입니다. 예를들어봅시다. X는 수학점수, Y는 사람이름이라고 합시다. X=c(62,82,95,51) Y=c("tim","marry","kate","bob") X를 내림차순으로 정렬할 때, Y도 X를 따라 정렬되게 하고 싶은 상황입니다. sort 함수에 index.return 옵션을 TRUE로 설정하면 아래 값이 반홥됩니다. > sx=sort(X,decreasing=TRUE,index.return=TRUE) > sx $x [1] 95 82 62 51 $ix [1] 3 2 1 4 ix는 기존의 index가 정렬 된 후 어느 위치에 오게되었는지를 알려줍니다. 이 index를 이용하여 두 함수를 정렬합시다. 우리가 의도한.. 2020. 12. 22.
[R코딩] 행렬을 열 방향으로 연결 (cbind) R행서 행렬을 열 방향(좌->우)으로 연결할 때는 cbind함수를 사용합니다. 두 행렬이 열방향으로 연결되려면 두 행렬의 행의 크기가 같아야합니다. 두 행렬을 정의해봅시다. > m1=matrix(1:6,2) > m1 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > m2=matrix(1:4,2) > m2 [,1] [,2] [1,] 1 3 [2,] 2 4 cbind 함수를 이용하여 연결해봅시다. > cbind(m1,m2) [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 1 3 [2,] 2 4 6 2 4 2020. 12. 21.
[R코딩] 행렬을 행 방향으로 연결 (rbind) 두 행렬을 행 방향(위->아래)으로 연결할 때는 rbind 함수를 사용합니다. 두 행렬을 정의해봅시다. 행 방향으로 연결하려면 두 행렬의 열의 크기가 같아야 합니다. > m1=matrix(1:6,2) > m1 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > m2=matrix(1:9,3) > m2 [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 rbind 함수를 이용하여 연결해봅시다. > rbind(m1,m2) [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 [3,] 1 4 7 [4,] 2 5 8 [5,] 3 6 9 2020. 12. 21.
[R코딩] 벡터 A의 원소가 벡터B에 속하는지 확인 (is.element) is.element 함수는 두 벡터 A와 B가 있을 때, 벡터 A의 원소가 벡터 B에 속하는지 확인해주는 함수입니다. 아래와 같이 사용합니다. > A=c(1,2,3) > B=c(2,4,6,8,10) > is.element(A,B) [1] FALSE TRUE FALSE 2020. 12. 20.
[R기초] 매칭된 원소를 찾는 match 함수 아래와 같은 두 벡터가 있습니다. A=c(20,40,100) B=c(10,20,30,40,50,60) A에 들어있는 원소가 B에 있는지 확인해봅시다. 20 -> B의 두번째 자리 40 -> B의 네번째 자리 100 -> B에 없음 위와 같은 연산을 하는 함수가 있습니다. match 함수입니다. 사용해봅시다. > A=c(20,40,100) > B=c(10,20,30,40,50,60) > match(A,B) [1] 2 4 NA 2020. 12. 20.
[R기초] 누적최솟값 (cummin) R에서 누적최솟값을 구하는 함수는 cummin 입니다. 예를들어 c(5,4,5,3,1) 이라는 벡터가 있을 때, 누적된 최솟값은 아래와 같이 구합니다. > cummin(c(5,4,5,10,1)) [1] 5 4 4 4 1 2020. 12. 20.
[R기초] 누적곱 (cumprod) R에서 누적곱을 계산해주는 함수는 cumprod 입니다. 원소의 누적된 곱을 결과로 출력해줍니다. 아래와 같이 사용합니다. > cumprod(c(1,2,3,4,5)) [1] 1 2 6 24 120 2020. 12. 20.
[R코딩] 지수함수 (exp) 지수함수는 $e^{x}$ 를 의미합니다. R의 지수함수는 exp입니다. 예를들어 $e^{5}$ 를 R에서 코드로 구현하면 아래와 같습니다. > exp(5) [1] 148.4132 2020. 12. 20.
[R코딩] 로그, 상용로그, 자연로그 함수 (log) 자연로그 R에서 제공하는 로그함수 log 의 디폴트는 자연로그입니다. 자연로그는 밑이 e인 로그입니다. > log(exp(1)) [1] 1 상용로그 상용로그는 밑이 10인 로그입니다. log함수에 아래와 같이 base 옵션에 10을 입력합니다. > log(2,base=10) [1] 0.30103 로그 원하는 수를 밑으로 설정할 수 있습니다. 예를들어 밑이 2인 로그는 base 옵션에 2를 입력하면 됩니다. > log(4,base=2) [1] 2 2020. 12. 20.
[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 코딩] 데이터프레임 에서 엑셀스타일, 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 코딩] 객체를 검색 디렉토리에 추가 (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코딩] 여러 값을 갖는 시계열 생성 (다변량 시계열) 날짜별로 복수의 값을 갖는 시계열을 생성하는 방법입니다. 행렬을 이용하여 정의하면 됩니다. 먼저 행렬을 하나 정의합시다. > 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.
[R 내장데이터 설명] mtcars 데이터 한줄요약 : 32행 11열의 데이터프레임 R 내장데이터를 잘 알아두면 유용하게 사용됩니다. 여러 책이나 예제들에서도 내장데이터를 사용하고 있어 공부하는데도 도움이 됩니다. 오늘은 내장데이터 중 mtcars 데이터를 알아봅시다. 먼저 help(mtcars) 를 입력하면, mtcars 데이터의 설명을 볼 수 있습니다. 이 중 description(설명)을 번역하면 아래와 같습니다. 1974년 모터트랜드 US 메거진에서 가져온 데이터입니다. 32 종 자동차의 10가지 디자인과 성능특성과 연료소모량입니다. str 함수를 적용해봅시다. > str(mtcars) 'data.frame':32 obs. of 11 variables: $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 .. 2020. 12. 12.
[R 내장데이터 설명] CO2 데이터 한줄요약 : 5열 84행의 데이터프레임 R 내장데이터를 잘 알아두면 유용하게 사용됩니다. 여러 책이나 예제들에서도 내장데이터를 사용하고 있어 공부하는데도 도움이 됩니다. 오늘은 내장데이터 중 CO2 데이터를 알아봅시다. 먼저 help(CO2) 를 입력하면, CO2 데이터의 설명을 볼 수 있습니다. 이 중 description(설명)을 번역하면 아래와 같습니다. CO2 데이터프레임은 80행 5열로 되어 있습니다. 돌피(Echinochloa crus-galli)라는 식물종을 이용하여 냉기에 대한 저항을 실험한 결과입니다. str함수를 적용해봅시다. > str(CO2) Classes ‘nfnGroupedData’, ‘nfGroupedData’, ‘groupedData’ and 'data.frame':84 ob.. 2020. 12. 12.
[R코딩] 자음만 남기는 함수 단어의 자음만 남기는 함수는 abbreviate( ) 입니다. 아래는 예시입니다. > abbreviate("start") start "strt" > abbreviate("hi hello") hi hello "hhll" 2020. 12. 12.
[R코딩] 미국 주(state)이름 데이터 R에서는 미국 주(state)이름 데이터를 제공합니다. 먼저 주 전체이름 데이터입니다. > state.name [1] "Alabama" "Alaska" "Arizona" "Arkansas" [5] "California" "Colorado" "Connecticut" "Delaware" [9] "Florida" "Georgia" "Hawaii" "Idaho" [13] "Illinois" "Indiana" "Iowa" "Kansas" [17] "Kentucky" "Louisiana" "Maine" "Maryland" [21] "Massachusetts" "Michigan" "Minnesota" "Mississippi" [25] "Missouri" "Montana" "Nebraska" "Nevada" [29] .. 2020. 12. 12.
R 월(month) 영어이름 데이터 (Jan,Feb,...) R에서는 월(month)의 영어이름 데이터를 제공합니다. 두가지가 있습니다. 전체이름 데이터는 month.name 입니다. > month.name [1] "January" "February" "March" "April" "May" [6] "June" "July" "August" "September" "October" [11] "November" "December" 약어 데이터는 month.abb 입니다. > month.abb [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" [12] "Dec" 2020. 12. 12.
R에서 알파벳 불러오기 R에서는 알파벳 대소문자를 내장데이터로 갖고 있습니다. 먼저 대분자데이터입니다. LETTERS 를 입력하면 됩니다. > LETTERS [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" [18] "R" "S" "T" "U" "V" "W" "X" "Y" "Z" 소문자는 소문자로 letters 를 입력합니다. > letters [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" [18] "r" "s" "t" "u" "v" "w" "x" "y" "z" 2020. 12. 12.
반응형