2017-04-19 3 views
1

나는 약 200 개의 행을 포함하는 데이터 프레임으로 작업하고 있는데, 복제 된 행을 제거하고 '분'열의 값을 함께 추가하려고합니다. 나는 R에 상당히 익숙하다. 그리고 나는 이것을 할 길을 찾지 못했다. 그것은 정규식을 적용하는 포함합니까? 나는 정말 어떤 해결책을 주셔서 감사합니다!R에서 문자열 일치를 기반으로 데이터 프레임의 행을 집계하는 방법은 무엇입니까? regex

df <- data.frame(name = c("Adam Tucker", "AdamTucker", "[email protected]", "adamtucker", "James Mirra", "JamesTMirra", "Sebastian F"), minutes = c(10, 3, 15, 2, 5, 1, 10)) 

        name minutes 
       Adam Tucker  10 
       AdamTucker  3 
[email protected]  15 
       adamtucker  2 
       James Mirra  5 
       JamesTMirra  1 
       Sebastian F  10 

그리고 내가 찾고있어 결과는 다음과 같습니다 :

내가 가진 데이터 프레임은 다음과 같습니다

 name minutes 
Adam Tucker  30 
James Mirra  6 
Sebastian F  10 

사전에 감사!

+2

'AdamTucker'및 '[email protected]'과 같은 사람을 같은 사람으로 자동 인식하는 것이 가장 간단한 방법은 아닙니다. 이 사람들을 식별하는 데 사용할 수있는 다른 정보가 있습니까? 그렇지 않으면 수동 청소가 필요할 수 있습니다. – Marius

+0

불행히도 아니요, 다른 어떤 정보도 없습니다. 프로그래밍 방식의 솔루션으로는 충분하지 않을 것이라고 생각 했었습니다. 특히이 경우에는 그렇습니다.하지만 코딩의 초보자이기 때문에 주위를 묻는 생각을했습니다. 그리고 그런데 어떻게 수동으로이 예제를 풀겠습니까? 고맙습니다! – Claudia

+0

데이터를 수동으로 (원래의 csv 파일 등으로) 편집하고 표준화 된 형식으로 각 행의 이름을 쓴 새 컬럼'cleaned_name'을 추가 할 것입니다. 그 후에는 자동으로 집계를 수행 할 수 있습니다. – Marius

답변

0

고유 한 모든 이름을 가진 마스터 목록이 있습니까? 당신은 아마 R에 pmatach 패키지를 보면, 또는 최종 버전으로 아담 턱을

df <- data.frame(name = c("Adam Tucker", "AdamTucker", "[email protected]", "adamtucker", "James Mirra", "JamesTMirra", "Sebastian F"), minutes = c(10, 3, 15, 2, 5, 1, 10)) 
require(sqldf) 
sqldf("select * from df where name LIKE '%adam%'") 

#      name minutes 
1    Adam Tucker  10 
2    AdamTucker  3 
3 [email protected]  15 
4    adamtucker  2 

그런 다음 각각의 같은 이름을 할당하거나 여기 이름의 다른 열을 추가 레벨을 사용하는 함수를 같이 사용 sqldf 패키지를 사용 말하고 병합 할 수 있습니다 name 열을 키로 사용하여 원래 데이터로.

+0

최종 이름을 가진 마스터리스트를 요청할 수 있습니다! 그리고 나는 또한 pmatach 꾸러미를 찾을 것입니다. 감사! – Claudia

관련 문제