2017-03-14 12 views
0

R에서 값을 매칭하는 데 매우 혼란 스럽습니다. 일치 함을 시도했습니다. %, % ..., round ... 등. 그러나 비교할 행운은 없습니다. 2 데이터가 서로 설정됩니다. 내 데이터의 일부가 3D 공간에서 교차합니다.데이터 프레임/행렬 간의 유사 값을 비교/일치/찾음.

데이터 세트는 거대

(X, Y, Z) (100.234,150.656,35.678) 샘플 좌표는 아래와 같이 데이터 프레임에 저장된다. 데이터 세트를 % % 함수와 비교할 때. 그것은 사실이 아닙니다. 포럼 페이지를 읽었으며 누군가 부동 소수점 값을 언급했습니다. R에서 일치하는 문제를 해결하는 방법? 일부 파트와 교차하는 2 개의 데이터 세트를 일치시키는 샘플 R 코드는 무엇입니까?

건배.

답변

0

R 섹션에 오신 것을 환영합니다.

정확히 어떤 종류의 데이터로 작업하려고하는지 또는 데이터 비교의 목적을 알지 못합니다.

또한
xdat<-c(10,13,32,17) 
ydat<-c(32,17,10,5,19) 


> which(xdat %in% ydat) 
[1] 1 3 4 

> match(xdat,ydat) 
[1] 3 NA 1 2 

> xdat %in% ydat 
[1] TRUE FALSE TRUE TRUE 

> unlist(sapply(xdat,function(x) grep(x,ydat))) 
[1] 3 1 2 

, this short R reference card 다른 작업 기능을 찾는 데 도움이 될 수 :

그러나 여기에 몇 가지 방법이 (약간 다른 출력과) 정보를 찾을 수 있습니다.

어떤 문제를 겪고 있는지, 왜 그런지 알기가 어렵습니다. 예를 들어, 값에 표시된 자릿수를 options(digits=7)으로 변경하여 원인을 찾을 수 있는지 확인할 수 있습니다.

> round(123.786582307,digits=8)%in%round(123.786582308,digits=8) 
[1] TRUE 

> round(3.786582307,digits=8)%in%round(3.786582308,digits=8) 
[1] TRUE 

> signif(123.786582307,digits=11)%in%signif(123.786582308,digits=11) 
[1] TRUE 

> signif(3.786582307,digits=9)%in%signif(3.786582308,digits=9) 
[1] TRUE 
+0

친애하는 nadizan 그러나, 나는 당신의 언급 한 기능을 사용, 답변 주셔서 감사합니다 :

또한, 아래의 예를 참조 데이터에 따라 roundsignif 기능을 사용할 수 있습니다. 그래, 그들은 이런 종류의 데이터를 연구하고있다. 내 데이터에서 알 수 있듯이 점 (.) 뒤에 오는 큰 십진수 값을 9 자리 숫자로 포함합니다. 123.786582307과 같은이 값을 123.786582308과 비교하면 데이터가 생성되지 않습니다. 이 문제에 대해 알고 싶습니까? round() 함수를 사용합니다. 불운. 감사합니다. – Muzo583

+0

어떻게 데이터를 생성 했습니까? 그 숫자가 어떻게 달라 졌습니까? 그게 당신이 기대하는 것입니까? 일치하는 정확성은 어느 정도입니까? 위의 예제를 보면 여러 가지 다른 일을 할 수 있습니다. @ user6729255 – nadizan

+0

그것이 효과가 있습니다! 고맙다. groundT [, 1 : 3] <-round (groundT [, 1 : 3], digits = 3) # "-1"은 1 : 3 열을 포함 함 lidar [, 13 : 14] <- round 13:14], 자릿수 = 3) <- which (groundar $ X % in % groundT $ X & lidar $ Y % in % groundT $ Y) – Muzo583