본문 바로가기
반응형

9.유용한 함수모음70

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] 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코딩] 행렬에서 통계량과 각 원소의 편차 (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코딩] 서브그룹의 통계량을 구해주는 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 코딩] 조합(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코딩] 차집합 (setdiff) setdiff 함수는 두 벡터를 집합으로 인식하여 차집합을 구해줍니다. 집합이기 때문에 중복되는 원소는 하나만 남겨집니다. > A=c(1,2,3,4,5,5) > B=c(1,1,2,4,4) > setdiff(A,B) [1] 3 5 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기초] 합집합 함수 (union) union 함수는 두 벡터를 집합으로 인식하여 합집합을 구해줍니다. 집합이기 때문에 중복되는 원소는 하나만 남겨집니다. > A=c(1,2,3,3) > B=c(3,4,4,5) > union(A,B) [1] 1 2 3 4 5 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.
[R기초] 누적곱 (cumprod) R에서 누적곱을 계산해주는 함수는 cumprod 입니다. 원소의 누적된 곱을 결과로 출력해줍니다. 아래와 같이 사용합니다. > cumprod(c(1,2,3,4,5)) [1] 1 2 6 24 120 2020. 12. 20.
[R 기초] 누적합 (cumsum) R에서 누적합을 계산해주는 함수는 cumsum 입니다. 원소의 누적된 합을 결과로 출력해줍니다. 아래와 같이 사용합니다. > cumsum(c(1,2,3,4,5)) [1] 1 3 6 10 15 2020. 12. 20.
[R 기초] 절댓값 함수 (abs) R에서 절댓값을 구하는 함수는 abs입니다. 예를들어 $\left| -2\right|$ 는 아래와 같습니다. > abs(-2) [1] 2 2020. 12. 20.
[R 기초] 제곱근 함수 (sqrt) R의 제곱근 함수는 sqrt 입니다. 예를들어 $\sqrt{2}$ 는 아래와 같습니다 . > sqrt(2) [1] 1.414214 아래와 같이 제곱 기호를 이용하여 계산할 수도 있습니다. > 2^(1/2) [1] 1.414214 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 코딩] 원소들의 순위를 알려주는 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 팩토리얼 함수 (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코딩] 자음만 남기는 함수 단어의 자음만 남기는 함수는 abbreviate( ) 입니다. 아래는 예시입니다. > abbreviate("start") start "strt" > abbreviate("hi hello") hi hello "hhll" 2020. 12. 12.
반응형