3. 데이터 프레임 편집
csv나 txt로 되어 있는 원본데이터를 불러올 수도 있지만, 직접 입력, 일부 수정 및 랜덤 데이터를 뽑을 수도 있습니다. R은 빅데이터를 분석하기 위한 툴이기 때문에 분석 대상인 원본 데이터를 잘 알아야 하며, 잘못된 부분에 대한 보정도 필요합니다.
3.1 데이터 프레임 직접입력 data.frame
데이터 직접 입력시 가장 흔히 하는 실수는 따옴표 ' 입니다. 숫자는 상관 없지만, 데이터의 이름을 표시할 때는 항상 따옴표를 써야 합니다.
name <- c(kim,lee,park,choi)
Error: object 'kim' not found
직접 입력을 위해서 임의로 값들을 지정하고, 실행을 시킵니다. 아래는 예제 입니다.
name <- c('kim','lee','park','choi')
age <- c(39,40,47,28)
sex <- c('f','m','m','f')
pay <- c(100, 200, 150, 300)
각각의 집합을 표와 같은 형태인 데이터 프레임으로 만들기 위해서는 "data.frame"이란 명령어를 사용합니다.
employee <- data.frame(name,age,pay,sex)
employee의 표는 다음과 같이 작성되었습니다.
3.2 데이터의 위치를 찾는 which
위의 데이터 프레임에서 나이에 대한 합을 a 라고 정의합니다. (명령어 sum을 사용)
a = sum(age)
마찬가지로 평균에 대한 부분은 mean 명령어를 사용합니다. 평균을 b라고 했을때, '평균이하'을 따로 분류하고 싶을 경우에는 논리기호 '<' 를 사용합니다. 이 데이터의 위치를 찾고 싶을 경우는 'which' 명령어를 사용합니다.
b = mean(age)
b <age
which (b<age)
3.3 데이터 프레임에서 특정값을 수정
만일 특정데이터가 틀렸을 경우에 어떻게 해야 할까요? 원본 데이터를 직접 수정하여 다시 불러올 수도 있지만, R에서 직접 바꿀 수도 있습니다. pay 부분에 첫번째 100이라는 값이 120으로 수정해야 한다면, 아래와 같이 실행합니다.
employee[1,3]<-120
employee를 다시 보면 변경된 값을 확인할 수 있습니다.
[x,y] 값은 좌표를 뜻하는 것으로 x는 행을 뜻하며, 여기서는 pay 값이고, y는 열을 뜻하며, 여기서는 3열의 값을 보여 줍니다.
employee[1,]
employee[,3]
행을 다루는 명령어는 하나 더 있습니다. $를 쓰고 뒤에 원하는 행의 제목을 선택하거나 직접 입력할 수 있습니다.
employee$
3.4 랜덤한 데이터를 추출 runif
랜덤한 숫자를 추출하는 방법은 random uniform의 runif 명령어 입니다.
runif(n, min, max)
최소값(min)과 최대값(max) 사이에 몇개(n)의 난수를 발생할 것인가 이며, 최소와 최대값을 넣지 않으면, 0~1까지 숫자로 난수를 만듭니다. 10 / 100 / 1000 개의 숫자를 만들었을때의 내용입니다.
runif (10)
runif (100)
runif (1000)
0~1000까지 난수를 발생시키는 간단한 방법은 곱하기 1000을 하면 됩니다.
runif (1000)x1000
소수점 자리가 필요하지 않은 경우에는 올림의 명령어 "ceiling"을 사용합니다.
x = ceiling (runif (10)10)*
마찬가지로 총 합과 평균을 구할 수 있습니다.
sum (x)
mean (x)
3~ 7 사이의 값을 논리연산자로 연결했을때의 결과입니다. 두 조건 모두를 만족해야 하는 "&"는 and를 의미하며, 둘중에 하나만 만족해도 되는 "|" 는 or 를 의미합니다.
x > 3 & x < 7 : 3~7 사이의 값
x < 3 | x > 7 : 3보다 작고, 7보다 큰 값
이런 논리 연산자를 통해 합과 평균을 구할 수도 있지만, 참과 거짓을 판단하는 논리기호도 사용할 수 있습니다. any는 하나라도 참값이 있어야 참이고, all은 모두가 참값이여야 참입니다.
sum (x < 3 | x > 7)
any (x < 3 | x > 7)
all (x < 3 | x > 7)
all (x >= 1)
x >= 1
기타) 간단한 그래프 그리기 및 반올림
막대 그래프를 그리려면, barplot 명령어를 사용합니다.
barplot (x)
올림(ceiling), 반올림(round), 내림(floor)에 대한 명령어를 적용해본 예 입니다.
k = runif(100, 10, 17)
ceiling (k)
round (k)
floor (k)
학교에서 코퍼스언어학 들을때 썼던 프로그램인데 덕분에 자연어 처리 및 빅데이터 처리에 대해 조금의 이해를 할 수 있게되었던 기억이 나네요 kr-dev? 개발쪽 태그 붙이시면 더많은분들이 볼수있을것 같네요
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations @geekstarter! You received a personal award!
Click here to view your Board
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations @geekstarter! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit