반응형

/*********************************************************************************************************
-- 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(1020)
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)
 
# -- 분산, 표준편차 
= c(715596)
 
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

test.csv


반응형

+ Recent posts