본문 바로가기
반응형

r159

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] 빈 데이터프레임 정의하고 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 출력되는 숫자 개수 설정하기 (유효숫자) 먼저 설정되어 있는 유효숫자 개수를 확인해봅시다. > getOption("digits") [1] 7 파이로 확인해봅시다. 유효숫자의 개수가 7개입니다. > pi [1] 3.141593 원하는 만큼 늘려봅시다. 최대 22까지 가능합니다. 설정은 22개까지 되지만, 실제 출력은 17개까지 됩니다. > options(digits = 22) > pi [1] 3.14159265358979 2021. 7. 11.
[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 내장데이터 설명] 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 업데이트, R스튜디오 업데이트, 패키지 업데이트, 패키지 옮기기 1. R 업데이트 install.packages("installr") library(installr) updateR() 2. R 스튜디오 업데이트 껐다 키면 됨. 3. R 버전 확인 version() 4. 라이브러리 옮기기 이전 버전에 있는 폴더들을 복붙하여 새버전폴더 안으로 옮기면 됩니다. 안쓰는 패키지를 정리할 겸 전부 지우도 필요한것을 하나씩 다시설치하는 것도 괜찮은 방법입니다. C:\Users\Username\Documents\R\win-library\이전버전 C:\Users\Username\Documents\R\win-library\새버전 5. 패키지 업데이트 update.packages(checkBuilt=TRUE) 6. 패키지 확인 packageStatus() 2020. 12. 23.
[R코딩] 행렬의 특잇값 분해 (svd) 행렬의 특잇값 분해는 아래와 같이 행렬 A를 U,D,V 세 행렬의 곱으로 나타내는 것입니다. (보통 D 대신 Σ 를 사용하는데, R 함수에서는 D를 사용합니다.) $A=UDV^{T}$ 특잇값 분해는 영어로 singular value decomposition 입니다. 줄어서 SVD 라고 부릅니다. R 함수 이름도 svd 입니다. singular value 를 한글로 옮긴 것이 '특잇값' 입니다. A,U,D,V 에 대한 설명은 아래와 같습니다. A : NxM 크기의 행렬 U : N차원 정방 직교 행렬 D : 대각행렬 V : M차원 정방 직교 행렬 아래는 R 예시입니다. > A=matrix(1:6,2) > A [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > svd(A) $d [1] 9.5.. 2020. 12. 22.
[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코딩] 행렬을 이용한 연립방정식의 해 (solve) 아래와 같이 미지수가 3개인 연립방정식이 있다고 합시다. $$ a_{11}x+a_{12}y_+a_{13}z=b_{1}\\ a_{21}x+a_{22}y_+a_{23}z=b_{2}\\ a_{31}x+a_{32}y_+a_{33}z=b_{3} $$ 행렬형태로 바꾸면 아래와 같습니다. $$ \begin{bmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23}\\ a_{31} & a_{32} & a_{33} \end{bmatrix} \begin{bmatrix} x\\ y\\ z \end{bmatrix} = \begin{bmatrix} b_{1}\\ b_{2}\\ b_{3} \end{bmatrix} $$ 간단하게 아래와 같이 나타냅시다. $$[a]X=[b]$$ 이 .. 2020. 12. 21.
[R코딩] 행렬 열별 평균 구하기 (colMeans) R에서 행렬 열 별로 평균을 구하는 함수는 colMeans 입니다. 행렬을 하나 정의합시다. > 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 colMeans 함수를 이용하여 열별로 평균을 구해봅시다. > colMeans(m) [1] 2 5 8 11 2020. 12. 21.
[R코딩] 행렬 열 별로 합 구하기 (colsums) 행렬에서 열 별로 합을 구하는 함수는 colSums 입니다. 행렬을 하나 정의합시다. > 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 colSums 함수를 이용하여 열 별로 합을 구해봅시다. > colSums(m) [1] 6 15 24 33 2020. 12. 21.
[R코딩] 행렬의 행 별로 합 구하기 (rowSums) 행렬에서 행 별로 합을 구하는 함수는 rowSums 입니다. 행렬을 하나 정의합시다. > 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 rowSums 함수를 이용하여 행 별로 합을 구해봅시다. > rowSums(m) [1] 22 26 30 2020. 12. 21.
[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코딩] 행렬의 곱 (%*%) R에서 행렬의 곱을 수행하는 함수는 %*% 입니다. 행렬을 하나 정의합시다. > m1=matrix(1:4,2) > m1 [,1] [,2] [1,] 1 3 [2,] 2 4 m1과 m1을 곱하는 행렬의 곱을 해봅시다. > m1%*%m1 [,1] [,2] [1,] 7 15 [2,] 10 22 행렬과 행렬을 곱할 때는, 앞 행렬의 열의 수와 뒤 행렬의 행의 수가 같아야 합니다. 두 행렬을 정의합시다. m2 는 2행3열, m3는 3행3열의 행렬입니다. > m2=matrix(1:6,2) > m2 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > m3=matrix(1:9,3) > m3 [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 m2의 열의 수와 m3의 행.. 2020. 12. 21.
[R기초] 대각행렬을 생성하는 diag 함수 대각행렬은 대각선 방향을 제외한 나머지 값이 0인 행렬입니다. R에서는 diag 함수를 이용하여 생성합니다. diag(값,행의수,열의수) 예를들면 아래와 같습니다. > diag(1,4,4) [,1] [,2] [,3] [,4] [1,] 1 0 0 0 [2,] 0 1 0 0 [3,] 0 0 1 0 [4,] 0 0 0 1 2020. 12. 20.
[R 코딩] 조합(nCr) 계산 R에서 조합을 계산하는 함수는 choose 입니다. 예를들어 조합 $_{n}C_{r}$ 은 아래와 같이 계산됩니다. $$_{n}C_{r}=\frac{n!}{\left ( n-r \right )!r!}$$ $_{5}C_{2}$ 를 R로 계산해봅시다. > choose(5,2) [1] 10 2020. 12. 20.
[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기초] 교집합 함수 (intersect) intersect 함수는 두 벡터를 집합으로 인식하여 교집합을 구해줍니다. 집합이기 때문에 중복되는 원소는 하나만 남겨집니다. > A=c(1,2,3,4,5,5) > B=c(1,1,2,4,4) > intersect(A,B) [1] 1 2 4 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기초] 누적최댓값 (cummax) R에서 누적최댓값을 구하는 함수는 cummax 입니다. 예를들어 c(1,3,2,5,4) 이라는 벡터가 있을 때, 누적된 최댓값은 아래와 같이 구합니다. > cummax(c(1,3,2,5,4)) [1] 1 3 3 5 5 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.
반응형