2017-03-14 25 views
0

Rでの値の照合は非常に混乱しています。%、%、%、%などで比較しようとしました。データは互いに設定されます。 私のデータの一部が3D空間で交差します。データフレーム/マトリックス間の類似の値を比較/一致させるR

データセットが巨大である

(X、Y、Z)(100.234,150.656,35.678):サンプル座標は、以下のように、データフレームに格納されています。私はデータセットを%in%関数と比較します。それは真実ではありません。 私はいくつかのフォーラムページを読んでおり、誰かが浮動小数点値について言及しています。どのように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)で変更して原因を見つけることができます。

さらに、あなたは以下の例を参照してください、あなたのデータに応じて、roundsignif機能を使用することができます。

> 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はしかし、私はあなた言及した機能を使用し、あなたの答えをありがとうございました。そうです、彼らはこの種のデータを扱っています。私のデータから分かるように、ドット(。)の後には9桁の数字を持つような大きな小数点の値が含まれています。この値を123.786582307と123.786582308と比較すると、データは生成されません。私はround()関数を使っています。運がない。ありがとうございます – Muzo583

+0

どのようにデータを生成しましたか?どのように数字が異なるのでしょうか?それはあなたの期待ですか?あなたのマッチングにはどんな正確さがありますか?上記の例を参照してください。@ user6729255 – nadizan

+0

それは働いた!ありがとうナディザン! #1 "3"は、列1:3を含む。 lidar [、13:14] < - round(lidar [、1:3] 13:14]、digits = 3) < - which(groundar $ X%in%groundT $ X&lidar $ Y%in%groundT $ Y) – Muzo583

関連する問題