본문 바로가기
반응형

R37

[R.아르] 문장에서 명사 추출하기 자주 쓰이는 명사만 보아도 대략 글의 요지를 알 수 있다고 한다. 한국 저작권협회에서 제공하는 이상의 에서 명사를 뽑아보자. (주소: https://gongu.copyright.or.kr/gongu/wrt/wrt/view.do?wrtSn=9000973&menuNo=200030) '박제가 되어 버린 천재'를 아시오? 나는 유쾌하오. 이런 때 연애까지가 유쾌하오.육신이 흐느적흐느적하도록 피로했을 때만 정신이 은화처럼 맑소. 니코틴이 내 횟배 앓는 뱃속으로 스미면 머릿속에 으레 백지가 준비되는 법이오. 그 위에다 나는 위트와 파라독스를 바둑 포석처럼 늘어놓소. 가증할 상식의 병이오.나는 또 여인과 생활을 설계하오. 연애기법에마저 서먹서먹해진 지성의 극치를 흘깃 좀 들여다본 일이 있는, 말하자면 일종의 정신분일.. 2016. 11. 22.
[R. 아르] 로또 확률 계산하기 for() / choose() 로또란 기본적으로 45개 중에 하나를 뽑고, 남은 44개 중에 하나를 뽑고... 의 과정을 6번 반복하는 것이다. R은 사실 반복문을 썩 좋아하지 않는다. 반복문을 쓸 바에는 벡터로 만드는 게 낫다는 철학. 예를 들어 다음과 같이 for()를 사용하면 반복문을 만들 수 있다. i 가 45에서 시작하여 40이 될 때까지 괄호{ } 안의 내용이 반복된다. 하지만 R은 이렇게 하느니, 45부터 40까지 벡터를 만들어서 다음과 같이 처리하는 쪽을 권장한다. prod() 는 product 의 약자로, 벡터의 모든 요소를 곱해 주는 함수다. 어쨌든 45개 중 1개, 44개 중 1개... 를 6번 실행할 때 가능한 모든 경우의 수는 5864443200 이라는 것을 알았다. 큰 숫자이므로 콤마(,)를 찍어 보자. fo.. 2016. 11. 8.
[R. 아르] 숫자를 날짜로 바꾸기 2016/09/20 - [엑셀] - [엑셀] 요일 연속으로 채우기에서 엑셀은 날짜 1900-01-01 을 숫자 1로 간주한다고 언급한 바 있다. R도 마찬가지로 날짜와 숫자의 변환이 가능하다. 예를 들어 다음과 같은 x, y에서 setdiff()를 사용하면 2016-01-02 가 아닌 16802가 나온다. 이 숫자를 다시 날짜로 바꾸려 하면 위와 같이 'origin' must be supplied 라는 에러가 난다. 메시지 내용대로 기준점이 있어야 한다는 의미인데, 엑셀이 1900년 1월 1일을 기준으로 하듯 R은 유닉스 표준에 맞추어 1970년 1월 1일을 기준으로 한다고 알아두면 편리하다. 2016. 10. 28.
[R.아르] R에서 엑셀의 vlookup()처럼 첫 번째 값만 가져오기 다음과 같은 x, y가 있다고 할 때 x의 product에 해당하는 y의 memo를 가져오는 것은 어렵지 않다. 2016/09/08 - [R] - [R.아르] R에서 엑셀의 vlookup() 기능 사용하기에 나왔던 merge()를 사용하면 되겠다. 하지만 이전 포스팅에서 지적했듯이, merge()는 가져오고자 하는 대상에 중복값이 있으면 그 값을 모두 매칭시켜 준다. (이 예에서는 E에 Eggplant와 Enchilada 라는 값이 두 개 있다.) 엑셀의 vlookup()이 첫 번째 값만 반환해 주는 것과는 사뭇 다르다. vlookup()처럼 첫 번째 값만 반환하려면 2016/09/12 - [R] - [R.아르] 중복된 행 삭제하기 unique() / duplicated() 에 등장한 duplicated.. 2016. 10. 28.
[R.아르] 주별 합계 구하기 cut() 다음과 같은 자료에서 주별 합계를 구해 보자. 2016/10/14 - [R] - [R.아르] R에서 월별 합계 구하기 / 글자 일부분 자르기 substr() 와 마찬가지로 주에 해당하는 열을 임시로 만들어 넣어야 한다. cut() 함수의 [breaks=] 옵션이 이런 역할을 해줄 수 있다. 기준은 월요일이며, 일요일을 시작일로 지정하고 싶다면 [start.on.monday=F] 옵션을 사용한다. dcast() 를 사용하면 주별 합계를 구할 수 있다. 참고로 주뿐 아니라 월도 cut()을 이용해 구할 수 있다. 2016. 10. 24.
[R.아르] R에서 월별 합계 구하기 / 글자 일부분 자르기 substr() 2016/10/10 - [엑셀] - [엑셀] 월별 합계 구하기 month() / 배열수식 에서 본 월별합계를 R에서 사용하려면 어떻게 해야 할까? 일단 날짜에서 월을 뽑아내는 함수를 사용해야 할 것이다. lubridate 패키지의 month() 함수가 이러한 역할을 한다. lubridate 패키지를 설치하고 month()와 year() 함수를 사용하면 잘 추출되는 것을 알 수 있다. 이제 다음과 같은 x가 있다고 하자. 월을 추출해 임시 열로 붙여 놓고 참고로 명령줄 전체를 괄호()로 둘러싸 주면 명령줄의 실행 결과를 보여 준다. 즉, 위의 예에서 y를 다시 호출할 필요 없이 와 같이 적으면 cbind()의 결과를 바로 보여준다. 이제 dcast()를 사용하면 되겠다. (참고: 2016/09/23 - [.. 2016. 10. 14.
[R. 아르] 반복되는 값 추가하기 rep() rep() 은 Replicate를 의미하며, 요소를 반복하여 벡터를 만들어 주는 함수다. 이를 이용하여 특정 값을 생성, 삽입이 가능하다. 예를 들어 a를 3번 반복하고 싶다면 rep("a", 3) 과 같이 적어준다. 특정 벡터를 반복할 수도 있다. 벡터 자체가 아니라 벡터의 각 요소들을 반복하고 싶다면 [each=] 옵션을 사용한다. 예를 들어 다음과 같은 자료가 있다고 하자 오른쪽에 항목을 추가하고 싶다면 rep()과 cbind()를 활용하면 되겠다. 열 이름이 마음에 들지 않는다면 아예 cbind()에서 선언해 주자. 자료가 길다면 반복횟수를 숫자로 지정하기보다 nrow()를 쓰는 편이 좋다. 2016/10/04 - [R] - [R.아르] 현재 날짜 가져오기 Sys.Date() 에서 본 바와 같이 .. 2016. 10. 11.
[R.아르] 벡터를 아래로 출력하기 cat() cat() 은 concatenate를 의미하는 함수로, 벡터를 합쳐서 보여준다. 예를 들어 다음과 같은 x, y가 있다면 cat(x, y) 는 두 벡터를 합쳐서 보여준다. 프롬프트가 결과 바로 오른쪽에 붙는 것이 인상적이다. 결과 출력 후 한 줄을 내리고 싶다면 "\n" 을 사용한다. cat() 함수에는 [sep=] 옵션이 있다. 이를 이용해 [sep=] 옵션에 "\n"를 입력하면 벡터를 아래로 출력할 수 있다. 2016. 10. 7.
[R.아르] 일부 글자로 vlookup() 기능 사용하기 pmatch() pmatch()는 partial match 의 약자로 일부 문자열을 입력하면 주어진 벡터 중 몇 번째 요소가 해당 문자를 포함하는지 반환해 준다. 예를 들어 다음과 같은 x에서 appl을 찾으면 첫 번째 요소인 apple에 포함되어 있다고 알려준다. 2016/09/30 - [R] - [R.아르] 객체 지우기 rm() / 특정 문자가 포함된 행 추출하기 grep() 에서 본 grep()과 비슷하지만 인자로 벡터를 받을 수 있다는 점에서 차이가 있다. 후에서 확인할 것이다. 계속해서 'ap'을 찾으면 알 수 없다고 나온다. 이는 ap을 포함한 문자열이 1, 2, 3, 5 등으로 너무 많기 때문이다. R은 이들을 동등하게 취급하며 결과값을 반환하지 않는다. 하지만 'app'의 경우에는 2번째 요소를 반환해 주.. 2016. 10. 4.
[R.아르] 현재 날짜 가져오기 Sys.Date() 현재 날짜를 불러오는 함수는 Sys.Date() 대소문자에 주의한다. 참고로 현재 시각을 불러오는 함수는 Sys.time() 역시 대소문자에 주의한다. 원하는 포맷대로 표시하고 싶을 때는 format()을 이용한다. 옵션은 다음과 같다. %Y - 4자리 년도%y - 2자리 년도%m - 2자리 월%d - 2자리 일 예를 들어, 만일 년도를 맨 오른쪽으로 보내고 싶다면 format(Sys.Date(), "%m-%d-%Y") 와 같이 표기한다. 요일을 표시하는 옵션은 다음과 같다. %a - 한 글자 요일%A - 세 글자 요일 시간 역시 다음 옵션을 이용해 출력할 수 있다. %H - 시%M - 분%S - 초 2016. 10. 4.
반응형