반응형
/*********************************************************************************************************
-- Title : [R3.3] 사용자 정의 함수(Function)
-- Reference : hrd-net
-- Key word : R function pytha str_replace_all 결측치 함수
*********************************************************************************************************/
-- R
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | # ******************************************** # -- 사용자 정의 함수 # ******************************************** # -- 매개변수가 없는 함수 예 f1 = function() { cat("매개변수가 없는 함수") } f1() # -- 매개변수가 있는 함수 예 f2 = function(x) { # 가인수=매개변수 cat("x의 값 = ",x, "\n") # \n 줄바꿈 print(x) # 변수만 사용 } f2(50) # -- 리턴값이 있는 함수 예 f3 = function(x, y) { add = x + y cat('add = ', add, '\n') sub = x - y cat('sub = ', sub) return(add) } result = f3(10, 20) result # -- 구구단 출력 함수 gugu = function(dan) { cat('###', dan, '단###\n') for(i in 1:9){ cat(dan,'*',i,'=', (dan*i) , '\n') } } gugu(5) gugu(9) # -- 파일 불러 함수로 계산하기 test = read.csv("D:\\RProject\\Rwork\\Part-I\\test.csv", header=TRUE) head(test) summary(test) # 요약통계량 table(test$A) # A변수 대상 빈도분석 fa = function() # 변수A 대상 빈도분석,최대값, 최소값 구하기 함수 { a = table(test$A) # A변수 대상 빈도분석 cat("변수 A에 대한 빈도분석 결과 \n") print(a) # 빈도분석 cat("max =", max(a), "\n") cat("min =", min(a)) } fa() # -- 파타고라스 정의 증명- 식 : a^2+b^2=c^2 pytha = function(s,t) { a = s^2 - t^2 b = 2*s*t c = s^2 + t^2 cat("피타고라스의 정리 : 3개의 변수 : ",a,b,c) } pytha(2,1) # s,t는 양의 정수 -> 3 4 5 # -- 결측치(NA) 데이터 처리 data = c(10,20,5,4,40,7,NA,6,3,NA,2,NA) data mean(data) mean(data, na.rm = T) # -- 결측치 데이터 처리 함수 na = function(x) { cat("x값에 대한 평균 : ", mean(x, na.rm=TRUE),"\n") cat("x값에 대한 평균(소수점 2자리) : ", round(mean(x, na.rm=TRUE),2),"\n") ifelse(x>=0, x, NA) # 원소 출력 } na(data) # -- 분산, 표준편차 x = c(7, 15, 5, 9, 6) var(x) # 15.8 sd(x) # 3.974921 sqrt(var(x)) # 3.974921 var_sd = function(x){ # 분산 = sum((x - 평균)^2) / n-1 var = sum((x - mean(x))^2) / (length(x) - 1) sd = sqrt(var) cat('분산 = ', var, '\n') cat('표준편차 = ', sd) } var_sd(x) # -- 문자열 -> 숫자 변경 install.packages("stringr") library(stringr) str = '($124,512)' str str2 = str_replace_all(str, '\\,|\\(|\\)|\\$','') str2 num = as.numeric(str2) num * 100 # 12451200 str_pro = function(str) { str2 = str_replace_all(str, '\\,|\\(|\\)|\\$','') num = as.numeric(str2) return(num) } str_pro(str) | cs |
-- File
반응형