본문 바로가기
반응형

일치6

[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. 아르] 리스트에 없는 항목만 추출하기 (차집합, setdiff()) 지난 번 2016/09/08 - [R] - [R.아르] R에서 엑셀의 vlookup() 기능 사용하기 에서 본 merge()는 일종의 '교집합'을 구하는 함수로 생각해도 되겠다. 이번엔 차집합을 구하는 함수를 알아보자. 예를들어 다음과 같은 x, y에서 x에만 있고 y에는 없는 것을 고르려면 setdiff() 함수를 사용하면 된다. 반대로 y에만 있고 x에는 없는 것을 고르려면 순서를 반대로 사용한다. 내친 김에 합집합, 교집합, 부분집합도 알아보자. 합집합은 union() 함수를 사용한다. 사용하는 순서에 따라 원소의 배열이 다르며 자동으로 정렬되지는 않는다. 정렬하려면 sort()를 사용하자. 교집합은 intersect()를 사용한다. 한 집합이 다른 집합의 부분집합인지도 알 수 있다. 예를들어 다음.. 2016. 9. 23.
[R.아르] R에서 엑셀의 vlookup() 기능 사용하기 vlookup이라 함은 자고로 레퍼런스에서 맞는 자료를 찾아 그 값을 반환해 주는 것이다. R에도 엑셀의 vlookup() 같은 함수가 있다. 다음과 같은 두 개의 데이터프레임이 있다고 하자. 우리는 y를 레퍼런스로 삼아 x의 각 name에 해당하는 값을 찾아 줄 것이다. 해당 역할을 하는 함수는 merge()로, merge(자료1, 자료2, 기준) 과 같이 쓴다. 쨘! 간단하다. vlookup()에는 안에 자료를 지정하는 순서가 중요하지만 merge()에는 순서가 중요하지 않다. x와 y의 순서를 바꾸어도 결과는 마찬가지다. R은 두 개의 자료를 비교하고, 값이 있는 경우 값을 모두 반환하고 값이 없는 경우에는 결과를 생략한다. 예를들어 위와 같은 x, y에 merge()를 사용하면 이와 같은 결과가 .. 2016. 9. 8.
[R.아르] 특정 조건에 맞는 글자(이메일 주소)만 추출하기 다음과 같은 x가 있다고 하자. 우리는 여기에서 이메일 주소만 예쁘게 뽑아서 다음과 같이 만들 것이다. 그러기 위해서는 두 가지 함수를 써야 하는데 첫 번째는 '일치하는 문자열만 뽑아줘' regmatches() 이고, 두 번째는 그 일치하는 문자열의 형식을 지정하는 regexpr() 이다. 조합하면 regmatches(regexpr()) 와 같이 될 테니, regexpr()부터 먼저 보자. 사실 regexpr()은 R뿐 아니라 여기저기서 쓰는 유명한 녀석인 '정규표현식' 이라는 녀석을 다루는 함수다. 정규표현식을 다 다루기에는 분량이 너무 방대하고, 일단 팁 하나. http://regexr.com/ 위 사이트에 가면 정규표현식을 공부하고 직접 실습해볼 수 있다. 이제 이메일 주소에 대한 정규표현식을 만들.. 2016. 9. 6.
[R.아르] 특정 조건을 만족하는 행의 개수 구하기 아래와 같은 x에서 var의 값이 60을 넘는 행의 개수는 몇 개일까? 2016/09/05 - [R] - [R.아르] 특정 조건을 만족하는 행만 추출하기 에서 논의한 대로 다음과 같이 뽑으면 될 것이다. 총 5개 행이다. 데이터가 많아지면 직접 셀 수는 없고, 이럴 때 행의 개수를 세어 주는 함수는 nrow() 쨘! 근데 추출이 조금 번거롭다. 조건을 만족하는 행의 개수만 한 번에 셀 수도 있지 않을까? 물론이다. 그냥 y대신 x[x$var>=60,] 를 쓰면 된다. 하지만 개인적으로는 아래의 코드가 훨씬 직관적이고 기억하기 쉽다고 생각하는 바, 오? 왠지 x$var >= 60 에 해당하는 것들의 길이(?) 라고 자연스럽게 읽힌다. which()는 괄호 안의 조건에 해당하는 데이터가 어디어디에 있는지 그.. 2016. 9. 5.
[R.아르] 특정 조건을 만족하는 행만 추출하기 2016/08/30 - [R] - [R.아르] R 행,열 삭제 의 연장선상에서, 꼭 '몇 번째' 행만 뽑을 수 있는 것은 아니다. 특정 조건을 만족하는 행도 추출할 수 있다. 다음과 같은 x가 있다고 하자. 여기서 var 가 70 이상인 행만 뽑아내려면 다음과 같이 하면 된다. 맨 끝의 쉼표를 잊지 말자. 해당 조건을 만족하는 '행' 임을 알려주는 부분이다. 기본적으로 행과 열의 정의를 통해 위와 같이 추출하는 방법도 좋지만, 어쩌면 다음에 소개하는 subset()이 좀 더 마음에 들지도 모르겠다. subset(데이터프레임, 조건) 은 조금 더 간단하고 직관적인 추출을 지원한다. 사잇값을 뽑으려면 and에 해당하는 '&' 기호를 사용하면 된다. 날짜도 마찬가지로 조건을 걸어 추출할 수 있다. 다음과 같은.. 2016. 9. 5.
반응형