2010-04-22 4 views
5

두 개의 작은 데이터 프레임, this_txlast_tx이 있습니다. 그것들은 내가 말할 수있는 모든면에서 완전히 동일합니다. this_tx == last_tx은 동일한 치수의 프레임으로 결과가 모두 TRUE입니다. this_tx %in% last_tx, 두 TRUEs. 육안으로 확인되었으며, 분명히 동일합니다. 내가이 두 개의 R 데이터 프레임이 동일하지 않은 이유는 무엇입니까?

identical(this_tx, last_tx)

를 호출 할 때 나는 FALSE를 얻을. 유쾌하게, 심지어

identical(str(this_tx), str(last_tx))

TRUE를 반환합니다. this_tx <- last_tx으로 설정하면 TRUE이 표시됩니다.

무슨 일입니까? 저는 R의 내부 역학에 대해 가장 깊이 이해하고 있지는 않지만 두 데이터 프레임 간에는 한 가지 차이점을 찾을 수 없습니다. 관련성이있는 경우 프레임의 두 변수는 모두 동일한 수준, 수준에 대해 동일한 숫자 코딩, 둘 다 같은 원본 데이터 프레임의 일부 하위 집합입니다. 문자 벡터로 변환하면 도움이되지 않습니다.

배경 (나는 이것에 도움이되지 않기 때문에) : 나는 환자에게 약물 치료 기록을 가지고있다. 각 치료 기록은 근본적으로 사람과 날짜를 지정합니다. 두 번째 테이블에는 특정 치료 중에 주어진 각 약물 및 용량에 대한 기록이 있습니다 (대개 몇 가지 약물에는 각 치료가 주어짐). 나는 같은 복용량으로 같은 약을 먹고있는 연속적인 기간을 알아 내려고 노력하고있다.

가장 좋은 계획은 치료를 연대순으로 확인하는 것입니다. 치료 [i]의 약과 투여 량의 조합이 치료 [i-1]에서의 조합과 동일하다면 치료 [i]는 치료 [i-1]와 동일한 단계의 일부입니다. 물론, 마약/복용량 조합을 비교할 수 없다면, 바로 나옵니다.

+2

예를 들어 데이터 프레임 쌍을 게시 할 수 있다면 프레임에'dput()'을 실행 한 결과로 유용 할 것입니다. – Sharpie

+0

샤피가 이긴다. 두 데이터 프레임은 여전히 ​​dput()에는 나타나지만 str()에는 나타나지 않는 마더 데이터 프레임의 행을 가지고 있습니다. 샤피, 대답으로 올리면 가장 잘 표시 할거야. –

+0

나는 실제로'str'이'dput'의 "prettified"버전이라고 생각했습니다. 그것이 단지 요약 일 뿐이라고 추측됩니다. – Sharpie

답변

6

음, "moar specifics plz!" 이 경우 이길 수 있습니다.

가능한 경우 출력을 확인하여 dput()을 확인하십시오. str()은 개체의 내용을 요약하고 dput()은 개체를 재생성하기 위해 다른 R 인터프리터에 복사하여 붙여 넣을 수있는 형태로 모든 세부 정보를 덤프합니다.

6

일반적으로이 상황에서 all.equal을 시도하면 두 가지 개체가 왜 다른지에 대한 정보를 얻을 수 있습니다.

+0

"Attributes : Component 2 : Mean relative relative difference : 0.01158301" "이것은 데이터 프레임을 str()으로 만들었지 만,"Attributes : Component 2 "는 그렇지 않습니다. 정말로 행 번호로 나를 인도해라. –

+0

글쎄, 다른 속성은'속성'을 바라는 것이 좋습니다 ... – hadley