본문 바로가기
반응형

전체 글232

[R] 시도해보고 안되면 넘어가기 (tryCatch) 파이썬에 try except 문이 있다면, R에는 tryCatch함수가 있습니다. 사용 방법은 아래와 같습니다 . tryCatch({ # 실행 구문 print("실행 구문 시작") result 2023. 5. 23.
R 데이터프레임 원하는 값을 열에 추가하기 내장 데이터인 iris 를 이용하여 데이터프레임을 하나 만들어봅시다. > df=iris[1:5,] > df Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 열을 하나 추가하고 싶은 상황입니다. 모든 값이 "hi"인 열을 만들고 싶습니다. 아래와 같이 cbind 함수를 이용하면 됩니다. > cbind(df,'hi') Sepal.Length Sepal.Width Petal.Length Petal.Width Species "hi" 1 .. 2022. 11. 25.
R에서 엑셀 시트 이름 불러오는 방법 라이브러리는 readxl 을 사용합니다. library(readxl) 엑셀의 시트 이름을 불러올 때는 excel_sheets 함수를 사용합니다. excel_sheets(파일경로) 2022. 10. 27.
[R] 데이터 프레임을 특정 열 기준으로 정렬하기 데이터 프레임을 하나 정의합시다. A=c(5,4,7,6,2,1,3) B=c(1,2,3,4,5,6,7) df=data.frame(A,B) > df A B 1 5 1 2 4 2 3 7 3 4 6 4 5 2 5 6 1 6 7 3 7 A 열을 기준으로 정렬해보겠습니다. order 함수를 이용하여 A열의 행들의 크기 순서를 알아냅니다. > order(df$A) [1] 6 5 7 2 1 4 3 이 순서를 데이터프레임의 행 인덱싱에 사용하면 됩니다. > df[order(df$A),] A B 6 1 6 5 2 5 7 3 7 2 4 2 1 5 1 4 6 4 3 7 3 2022. 4. 2.
[R] 빈 데이터프레임 정의하고 for문으로 행 추가하기 아래는 한가지 예시이고 응용해서 사용하면 됩니다. #빈 데이터프레임을 정의합니다. df1=data.frame() #rbind를 이용하여 추가해줍니다. for (i in 1:10){ C1=i C2=i^2 C3=i^3 C4=i^4 df1=rbind(df1,c(C1,C2,C3,C4)) } #열 이름을 설정합니다. names(df1)=c("i","i^2","i^3","i^4") 아래는 결과입니다. > df1 i i^2 i^3 i^4 1 1 1 1 1 2 2 4 8 16 3 3 9 27 81 4 4 16 64 256 5 5 25 125 625 6 6 36 216 1296 7 7 49 343 2401 8 8 64 512 4096 9 9 81 729 6561 10 10 100 1000 10000 2022. 2. 8.
R 데이터프레임 쉽게 이해하기 사전지식 : R 벡터 데이터프레임은 여러개의 벡터를 이어놓은 것이라고 할 수 있습니다. 각 벡터가 데이터 프레임의 열이 됩니다. 예를 들어봅시다. 벡터를 세개 정의하겠습니다. > vec1=c(1,2,3,4,5) > vec2=c('a','b','c','d','e') > vec3=c(TRUE,TRUE,TRUE,FALSE,FALSE) 데이터 프레임으로 합쳐봅시다. 아래와 같이 data.frame 이라는 함수를 사용하고, 벡터를 콤마로 구분해주시면 됩니다. > df1=data.frame(vec1,vec2,vec3) > df1 vec1 vec2 vec3 1 1 a TRUE 2 2 b TRUE 3 3 c TRUE 4 4 d FALSE 5 5 e FALSE 벡터가 각 열에 들어간 것을 알 수 있습니다. 2021. 10. 18.
[R] not writable 오류 해결방법 패키지를 설치하려고 할 때 not writable 오류 가 발생하는 경우가 있습니다. > install.packages("compositions") Installing package into ‘C:/Users/Jihun/Documents/R/win-library/4.0’ (as ‘lib’ is unspecified) Warning in install.packages : 'lib = "C:/Users/MSDN/Documents/R/win-library/4.0"' is not writable 관리자권한으로 실행하면 된다길래 해봤는데 안됐고, 폴더 권한설정을 해봤는데도 해결이 안됐습니다. 혹시해서 패키지 설치 경로를 바꿔봤습니다. C드라이브의 R 설치경로에 있는 library 폴더로 바꾼 것입니다. > .li.. 2021. 10. 13.
[R강의] 데이터프레임을 행렬로 바꾸는 방법 먼저 데이터프레임을 하나 정의합시다. > md=data.frame(C1=c(1,2,3),C2=c(10,20,30)) > md C1 C2 1 1 10 2 2 20 3 3 30 행렬로 바꾸는 함수는 as.matrix 입니다. > md_m=as.matrix(md) > md_m C1 C2 [1,] 1 10 [2,] 2 20 [3,] 3 30 잘 바뀌었는지 확인해봅시다. > class(md_m) [1] "matrix" "array" 2021. 10. 12.
R에서 날짜,시간 데이터 인식하는 법 (strptime) 아래와 같은 데이터프레임이 있다고 합시다. date=c("2021-01-01 01:01:01","2021-01-02 02:01:01","2021-01-03 03:01:01","2021-01-04 04:01:01","2021-01-05 05:01:01") x=c(10,20,30,40,50) dt=data.frame(date,x) > dt date x 1 2021-01-01 01:01:01 10 2 2021-01-02 02:01:01 20 3 2021-01-03 03:01:01 30 4 2021-01-04 04:01:01 40 5 2021-01-05 05:01:01 50 > str(dt) 'data.frame':5 obs. of 2 variables: $ date: chr "2021-01-01 01:01:0.. 2021. 9. 16.
R에서 날짜 데이터 인식하는 법 (as.Date) 아래와 같은 데이터프레임이 있다고 합시다. date=c("2021-01-01","2021-01-02","2021-01-03","2021-01-04","2021-01-05") x=c(10,20,30,40,50) dt=data.frame(date,x) > dt date x 1 2021-01-01 10 2 2021-01-02 20 3 2021-01-03 30 4 2021-01-04 40 5 2021-01-05 50 > str(dt) 'data.frame':5 obs. of 2 variables: $ date: chr "2021-01-01" "2021-01-02" "2021-01-03" "2021-01-04" ... $ x : num 10 20 30 40 50 date 열은 날짜데이터이므로 날짜 데이터로 인식을.. 2021. 9. 16.
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 에서 아주 큰 정수 입력하는 방법 R에서는 최대 16개의 숫자(digits)을 인식합니다. > 1111122222333334444455555 [1] 1111122222333334388726000 이런 문제도 있습니다. 아주 큰 수를 입력하면 무한으로 인식합니다. > 10e500 [1] Inf 아주 큰 정수를 다뤄야 하는 경우 패키지를 사용해야 합니다. gmp라는 패키지를 사용하면됩니다. 먼저 패키지를 설치하고 불러옵시다. install.packages("gmp") library(gmp) as.bigz 라는 클래스를 이용합니다. 숫자를 큰따옴표 안에 입력해야 합니다. > as.bigz("111111111111111111111111111111111") Big Integer ('bigz') : [1] 11111111111111111111111.. 2021. 7. 12.
R 유효숫자 최대 몇개까지 가능할까? 옵션 입력값에서는 유효숫자를 최대 22개까지 설정이 가능합니다. > options(digits = 23) Error in options(digits = 23) : invalid 'digits' parameter, allowed 0...22 > options(digits = 22) 실제 입력에서는 그렇지 않습니다. 정수를 입력할 때는 17개까지 제대로 입력됩니다. > 12345123451234512345 [1] 12345123451234512896 소수점과 함께 입력할 때도 17개까지 가능합니다. > 12345.123451234512345 [1] 12345.123451234513 2021. 7. 11.
R 출력되는 숫자 개수 설정하기 (유효숫자) 먼저 설정되어 있는 유효숫자 개수를 확인해봅시다. > getOption("digits") [1] 7 파이로 확인해봅시다. 유효숫자의 개수가 7개입니다. > pi [1] 3.141593 원하는 만큼 늘려봅시다. 최대 22까지 가능합니다. 설정은 22개까지 되지만, 실제 출력은 17개까지 됩니다. > options(digits = 22) > pi [1] 3.14159265358979 2021. 7. 11.
[R기초] 데이터프레임을 벡터로 만드는 방법 데이터프레임을 벡터로 바꿀때는 unlist 함수를 사용합니다. 데이터프레임을 하나 정의합시다. > mydt=data.frame(c1=c(1,2,3),c2=c(10,20,30),c3=c(100,200,300)) > mydt c1 c2 c3 1 1 10 100 2 2 20 200 3 3 30 300 unlist 함수를 사용해봅시다. > myv=unlist(mydt) > myv c11 c12 c13 c21 c22 c23 c31 c32 c33 1 2 3 10 20 30 100 200 300 > str(myv) Named num [1:9] 1 2 3 10 20 30 100 200 300 - attr(*, "names")= chr [1:9] "c11" "c12" "c13" "c21" ... 벡터로 바뀌었습니다. 벡.. 2021. 5. 28.
[R] NA가 포함된 데이터의 평균을 apply 함수로 구하기 apply(df,2,mean,na.rm=TRUE) NA가 포함된 데이터프레임 df가 있다고 합시다. apply(df,2,mean) 이라고 입력하면 NA가 고려되지 않아 계산이 되지 않습니다. 아마 아래와 같이 입력하려고 할 것입니다. apply(df,2,mean(na.rm=TRUE)) 위와 같이 입력할 경우 아래 에러가 뜹니다. Error in mean.default(na.rm = TRUE) : 기본값이 없는 인수 "x"가 누락되어 있습니다 아래와 같이 입력해주어야 합니다. 2021. 5. 28.
R에서 역행렬,행렬식,전치행렬 구하는 방법 함수는 아래와 같습니다. 역행렬 solve( ) 행렬식 det( ) 전치행렬 t( ) 아래는 예시입니다. > A=matrix(c(1,3,4,2,5,1,4,2,3),nrow=3) > A [,1] [,2] [,3] [1,] 1 2 4 [2,] 3 5 2 [3,] 4 1 3 > t(A) [,1] [,2] [,3] [1,] 1 3 4 [2,] 2 5 1 [3,] 4 2 3 > solve(A) [,1] [,2] [,3] [1,] -0.22807018 0.03508772 0.28070175 [2,] 0.01754386 0.22807018 -0.17543860 [3,] 0.29824561 -0.12280702 0.01754386 > det(A) [1] -57 2021. 3. 30.
R스튜디오 SSH RSA key None 이고 생성 안될때 아래 명령어 입력. library(openssl) key 2021. 2. 9.
R스튜디오에서 세션,스크립트,프로젝트 개념 R에는 세선(Session), 스크립트(Script), 프로젝트(Project) 라는 개념이 있습니다. 세션(Session) 여러분이 R스튜디오를 열게 되면 R스튜디오가 실행되는데요. 이렇게 실행된 하나의 R스튜디오를 세션이라고 부릅니다. 세션 탭에서 New Session 을 누르면 새 창이 뜹니다. 가장 처음 연 세션에서 작업한 내용들은 working directory에 .RData 형태로 저장되어, 다음번에 R스튜디오를 열었을때 자동으로 불러와집니다. 스크립트(Script) 코드를 작성하고 실행하는 부분입니다. 한 세션에 여러개 스크립트를 생성할 수 있습니다. 각 스크립트는 별도로 저장이 가능합니다. 프로젝트(Project) 하나의 폴더라고 생각하시면 됩니다. 프로젝트를 생성하고, 이 프로젝트 안에서.. 2021. 2. 8.
[R 내장데이터 설명] quakes 데이터 1. 설명 몸파크기 MB>4.0 인 1000개의 지진의 위치데이터이다. 1964년 이래로 피지(Fiji) 큐브 근처에서 발생한 지진입니다. 2. 변수 5개의 변수, 1000개의 관측 Latitude(위도) of event Longitude(경도) Depth (km) Richter Magnitude(리히터 규모) Number of stations reporting(관측소 수) 3. 데이터 데이터 형식 : data.frame > str(quakes) 'data.frame':1000 obs. of 5 variables: $ lat : num -20.4 -20.6 -26 -18 -20.4 ... $ long : num 182 181 184 182 182 ... $ depth : int 562 650 42 626.. 2020. 12. 31.
[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기초] for문이 한줄이면 대괄호는 필요없다 for문을 한줄로 쓸 경우 대괄호는 생략이 가능합니다. 아래와 같습니다. > for (i in 1:10) print(i) [1] 1 [1] 2 [1] 3 [1] 4 [1] 5 [1] 6 [1] 7 [1] 8 [1] 9 [1] 10 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.
반응형