[R기초] 조건에 맞는 원소의 위치를 반환 (which 함수)
[R기초] 조건에 맞는 원소의 위치를 반환 (which 함수) 1. 벡터 벡터와 비교연산자를 이용하여 조건을 대입하면, 해당 조건에 만족하는 원소의 위치를 반환합니다. > a=c(1,2,3,1,2,3) > which(a==3)[1] 3 6 > which(a>1)[1] 2 3 5 6 2. 데이터프레임 데이터프레임도 벡터와 원리는 같습니다. arr.ind 옵션을 TRUE로 설정하면 해당 원소의 행의 위치와 열의 위치를 각각 반환합니다. > df=data.frame(c1=c(1,2,3),c2=c(1,1,3),c3=c(1,2,2))> df c1 c2 c31 1 1 12 2 1 23 3 3 2 > which(df==1)[1] 1 4 5 7 > which(df==1,arr.ind=TRUE) row col[1,] 1..
2020. 10. 5.
[R기초] 데이터 생성하기 (rep, seq 함수)
[R기초] 데이터 생성하기 (rep, seq 함수) 1. rep 함수 rep는 반복한다는 의미인 repeat의 약어입니다. 두가지 사용법이 있습니다. rep(반복할 변수, times=전체 반복 횟수) times는 생략이 가능합니다. > rep(3,10) [1] 3 3 3 3 3 3 3 3 3 3 다른 방법은 each 옵션을 사용하는 것입니다. rep(반복할 변수, each=각 원소 반복 횟수) > rep(c(1,3),each=3)[1] 1 1 1 3 3 3 2. seq 함수 seq는 수열을 의미하는 sequence의 약어입니다. seq(시작값, 종료값, 간격) > seq(1,10,3)[1] 1 4 7 10
2020. 10. 5.
[R] apply 함수를 이용하여 이항 데이터로 변형하기
데이터프레임의 원소들을 한번에 이항데이터로 변경하는 방법입니다. 1) NA 여부에 따른 분류 먼저 데이터프레임을 하나 정의합시다. c1=c(1,2,3,NA,NA)c2=c(NA,NA,2,3,5)c3=c(3,NA,1,NA,6)df=data.frame(c1,c2,c3) > df c1 c2 c31 1 NA 32 2 NA NA3 3 2 14 NA 3 NA5 NA 5 6 NA와 NA가 아닌데이터 둘로 구분할 것입니다. NA인 경우를 FALSE, NA가 아닌 경우를 TRUE로 만들어봅시다. df_lgst=!(is.na(df_lgst)) > df_lgst c1 c2 c3[1,] TRUE FALSE TRUE[2,] TRUE FALSE FALSE[3,] TRUE TRUE TRUE[4,] FALSE TRUE FALSE[5,..
2020. 9. 28.
[R기초] apply 함수 (행, 열, 또는 각 원소에 함수를 일괄적용)
[R기초] apply 함수 (행, 열, 또는 각 원소에 함수를 일괄적용) 먼저 데이터프레임을 하나 만들어봅시다. > myd=cbind(r1=1:10,r2=101:110,r3=1001:1110)> head(myd) r1 r2 r3[1,] 1 101 1001[2,] 2 102 1002[3,] 3 103 1003[4,] 4 104 1004[5,] 5 105 1005[6,] 6 106 1006 1) 가로 방향 일괄적용 (평균) 가로 방향의 평균을 구해봅시다. 아래와 같은 형식으로 입력합니다. apply(데이터,방향,함수) 방향은 1이 가로방향, 2가 세로방향입니다. > apply(myd,1,mean) [1] 367.6667 368.6667 369.6667 370.6667 371.6667 372.6667 373...
2020. 9. 23.
[R] 분할표를 자동으로 만들어주는 table 함수
[R] 분할표를 자동으로 만들어주는 table 함수 table 함수는 범주형 자료의 분할표를 만들 때 사용됩니다. 예를들어 아래 벡터가 있다고 합시다. v=c("F","F","M","M","M") table 함수를 적용하면 아래와 같습니다. > table(v) v F M 2 3 위 경우는 변수가하나인 경우입니다. 변수가 2개인 경우도 살펴봅시다. v1=c("F","F","M","M","M") v2=c("A","B","C","A","B") d=data.frame(v1,v2) > table(d) v2 v1 A B C F 1 1 0 M 1 1 1
2020. 8. 31.
[R] 01,02,03,.. 형태의 벡터 만들기
[R] 01,02,03,.. 형태의 벡터 만들기 01,02,03,04...와 같은 벡터를 만드는 방법입니다. sprintf 함수를 사용합니다. ex) 01~50 까지의 벡터 num=sprintf("%02d", 1:50)
2020. 7. 29.
R 문자열에서 특정 문자/특수문자를 변경,제거하는 방법
R 문자열에서 특정 문자/특수문자를 변경,제거하는 방법 1) 특정 문자를 다른 문자로 변경 gsub("a", "b", data) > data="a123bb" > data=sub("a","k",data) > data [1] "k123bb" 2) 특정 문자를 제거 gsub("a", "", data) 4) 모든 특수문자 제거 gsub("[[:punct:]]", "", data) 5) 특정 특수문자만 제거 gsub("[\\$,]", "", data)
2020. 5. 16.
R 데이터 수 확인하는 함수 총집합(length, dim, nrow, ncol)
R 데이터 수 확인하는 함수 총집합(length, dim, nrow, ncol) 데이터의 수를 확인하는 함수는 네가지가 있습니다. 각함수의 의미를 먼저 간단히 알아봅시다. length : 길이 반환 dim : 차원반환 nrow : 행의 수 반환 ncol : 열의 수 반환 자료구조 별로 사용하는 함수가 다릅니다. 각각 알아봅시다. 1. 벡터, 요인의 데이터 수 확인 벡터의 데이터 수는 length 함수를 사용하면 알 수 있습니다. 나머지 함수들을 적용하면 어떻게 되는지도 알아봅시다. > vec=c(1,2,3,4,5) > length(vec) [1] 5 > dim(vec) NULL > nrow(vec) NULL > ncol(vec) NULL 요인(factor)도 벡터와 동일합니다. > fac=gl(2,3,l..
2020. 5. 16.
R 데이터프레임 인덱싱을 파라미터로 접근하기
R 데이터프레임 인덱싱을 파라미터로 접근하기 데이터프레임의 인덱싱 방법은 크게 두가지가 있습니다. $를 사용하는 방법과 [ ]을 사용하는 방법입니다. 물론 함께 사용할 수도 있습니다. 둘의 차이를 간단히 알아봅시다. 먼저 데이터프레임을 하나 만들어봅시다. > myd=data.frame(A=c(90,84,66,35),B=c(96,46,73,62),C=c(77,57,46,36)) > myd A B C 1 90 96 77 2 84 46 57 3 66 73 46 4 35 62 36 한 반의 학생이 4명인 A,B,C반의 수학점수입니다. $을 이용하여 A반에 접근해봅시다. > myd_A=myd$A > typeof(myd_A) [1] "double" 벡터가 반환됩니다. 이번에는 [ ] 을 이용하여 접근해봅시다. > ..
2020. 4. 28.
R 데이터프레임 행이름 리셋하는 법
R 데이터프레임 행이름 리셋하는 법 먼저 데이터프레임을 하나 정의합시다. a=1:5b=11:15c=101:105 mydata=data.frame(a,b,c) 정의한 데이터프레임은 아래와 같습니다. > mydata a b c1 1 11 1012 2 12 1023 3 13 1034 4 14 1045 5 15 105 이 데이터프레임의 1,3,5행을 mydata2라는 데이터프레임에 입력하겠습니다. mydata2=mydata[c(1,3,5),] 결과는 아래와 같습니다. 행 이름도 1,3,5가 되어 있는 것을 알 수 있습니다. > mydata2 a b c1 1 11 1013 3 13 1035 5 15 105 행 이름을 1,2,3으로 리셋하려면, 아래와 같은 코드를 입력하면 됩니다. rownames(mydata2)=..
2020. 4. 6.
R 행렬 인덱싱, 원소 추가/수정/제거
R 행렬 인덱싱, 원소 추가/수정/제거 1. 행렬의 인덱싱 행렬을 하나 정의합시다. > m1=matrix(c(1,2,3,4,5,6),nrow=2)> m1 [,1] [,2] [,3][1,] 1 3 5[2,] 2 4 6 인덱싱 원리는 벡터와 동일한데, 방향이 하나 추가된 것입니다. 행방향 index와 열방향 index가 있습니다. 아래와 같이 입력합니다. 행렬이름[행방향 index, 열방향 index] 1) 단일 원소 위 행렬의 1행2열 원소에 접근해봅시다. > m1[1,1][1] 1 1행 2열의 원소에 접근해봅시다. > m1[1,2][1] 3 2) 여러원소 벡터형태로 인덱스를 입력하면 됩니다. 1행의 2,3열의 원소에 접근해봅시다. > m1[1,c(2,3)][1] 3 5 아래와 같이 입력해도 됩니다. > ..
2020. 1. 30.
R 벡터의 인덱싱, 원소 추가/수정/제거
R 벡터의 인덱싱, 원소 추가/수정/제거 1. 인덱싱 벡터를 하나 정의합시다. > a=c(1,2,3,4,5)> a[1] 1 2 3 4 5 1) 단일원소 원소에 접근하는 방법은 대괄호 [ ] 를 이용하는 것입니다. 예를 들어 첫번째 원소에 접근한다면 아래와 같이 입력하면 됩니다. > a[1][1] 1 여기에 입력된 1을 index라고 합니다. 2) 범위 index를 구간으로 입력할 수도 있습니다. 1부터 3까지의 원소에 접근해봅시다. > a[1:3][1] 1 2 3 1:3이 마치 새로운 기호처럼 보이는데, c(1,2,3)인 벡터와 같습니다. 아래와 같이 입력해도 됩니다. > a[c(1,2,3)][1] 1 2 3 위 원리를 이용하여 1,3,5번째 원소에 접근해봅시다. > a[c(1,3,5)][1] 1 3 5..
2020. 1. 29.