問題タブ [fuzzyjoin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3129 参照

r - R で fuzzyjoin::difference_* を使用してあいまい結合を実行する方法

しきい値に基づいてマージしたい 2 つの異なるデータセットを使用しています。2 つのデータフレームが次のようになっているとします。

私が今欲しいのは、あいまい一致に基づいて、それぞれの値の 2 秒以内にあることを除いて、他のすべての値が同じであることに基づいて、左結合できるdf2ようにすることです。私は次の方法でそこに到達できると思いました:df1DateTimeCountItem

しかし、それは私に次の出力を与えます:

これは近いですが、名前が異なる場合、行 3 はマージされるべきではありません (そして、行 2 がマージされたくない場合でも、しきい値が与えられると予想されます)。

どうすれば次のデータフレームになりますか? の 2 行目と 3 行目は、しきい値の制限を満たしているにdf2もかかわらず、マージされていないことに注意してください。これは、他の列 ( を除く) が同一ではないためです。DateTimeCountItem

0 投票する
0 に答える
75 参照

r - rnoaa パッケージを使用したメモリの問題

パッケージrnoaaを操作して、気象イベントの df に米国のステーション ID を追加します。以下はstr()dfrainです。

サブセットのcsvファイルへのGoogleドライブリンク

rainこれに関係のない一連の変数を省略して、ここにdfのスニペットを示します

ghcnd_stations()これはティブルのスニペットです。rnoaaドキュメントでは割り当てを推奨しているため、毎回呼び出す必要はありません。

これまでのところ、ghcnd_stations()コマンドを使用してステーションのリストを呼び出すことができました。次に、CONUS 以外のステーションを削除した後、それらのステーションの緯度/経度座標を取得しfuzzyjoin::geo_inner_join、2 つのリストを比較して最も近いステーションにマージするために使用しました。 .

データのサブセットを取得してこれを実行しようとしたところ、動作しましたが、データセット全体でそのコードを実行しようとすると、memory.sizeエラーに直面しました:

uisngmemory.size = 9000を試し、メモリサイズの増加を読み取ろうとしましたが、まだエラーが発生します。memory.size(max = TRUE)これを返します:

これを行うためのより効率的な方法はありますか、それとも df をスライスしてコードを実行し、rbindそれを元に戻す必要がありますか?

文脈のために、ここにsys.info()

最初の質問!関連するものが含まれていない場合はお知らせください。ありがとう!

0 投票する
1 に答える
3243 参照

r - rsqlite_send_query(conn@ptr, statement) のエラー: 列名が重複しています: Ret

正常に機能した SQL クエリが多数ありますが、何らかの理由で機能しなくなりました。データは変更されていません。コードは変更されていません。

次のエラー メッセージが表示され続けます。

rsqlite_send_query(conn@ptr, statement) のエラー: 列名が重複しています: Ret

これらのエラーは、左結合で発生する傾向があります。以下に例を示します。

問題のテーブルには、「Ret」という名前の変数が含まれていません

最近、すべてのパッケージを更新しました。

これはレガシー コードです。可能な場合は dplyr::left_join を使用する傾向があります。しかし、 left_join は、SQL の左結合が達成できること (制約としての不等式など) を決して行いません。

これらは私がロードするパッケージです:

パッケージ <- c("ISLR","gam","biglm","dplyr","gtools","tidyr", "randomForest","splines", "tree", "pROC","lfe"," lubridate"、"stargazer"、"scales"、"ggplot2"、"scales"、"data.table"、"zoo"、"PerformanceAnalytics"、"stats"、"proto"、"timeSeries"、"timeDate"、" gsubfn"、"fBasics"、"DBI"、"RSQLite"、"sqldf"、"RODBC"、"tcltk"、"reshape"、"xts"、"data.table"、"parallel"、"lfe"、" readr"、"purrr"、"tibble"、"hms"、"stringr"、"lubridate"、"forcats")

これは私のセッション情報です ():

sessionInfo() R バージョン 3.3.3 (2017-03-06) プラットフォーム: x86_64-redhat-linux-gnu (64 ビット) 実行環境: Red Hat Enterprise Linux Server 7.3 (Maipo)

ロケール: 1 LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
LC_TIME=en_US.UTF-8 [4] LC_COLLATE=en_US.UTF-8
LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=en_US .UTF-8 LC_NAME=C LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

付属の基本パッケージ: 1 つの並列 tcltk スプライン stats
グラフィックス grDevices utils データセット メソッド base

その他の添付パッケージ: 1 forcats_0.2.0
stringr_1.2.0 hms_0.3 [4] tibble_1.2 purrr_0.2.2
readr_1.0.0 [7] reshape_0.8.6
RODBC_1.3-14 sqldf_0.4-10 [10] RSQLite_1.1-2 fBasics_3011.87
gsubfn_0.6-6 [13] timeSeries_3022.101.2
timeDate_3012.100 proto_1.0.0 [16] PerformanceAnalytics_1.4.3541 xts_0.9-7 Zoo_1.7-14 [19] data.table_1.10.4 ggplot2_2.2.1
scales_0.4.1 [22]
stargazer_5.2 lubridate_1.6.0 lfe_2.5-1998 [25] Matrix_1.2-8 pROC_1.9.1
tree_1.0-37 [28] randomForest_4.6-12
tidyr_0.6.1 gtools_3.5.0 [31] dplyr_0.5.0 biglm_0.9-1 DBI_0.5-1 [34] gam_1.14 foreach_1.4.3
ISLR_1.0

名前空間を介してロードされた (アタッチされて いない
) :
.3 Rcpp_0.12.9 xtable_1.8-2 [13] digest_0.6.12 stringi_1.1.2 grid_3.3.3 tools_3.3.3 Sandwich_2.3-4
magrittr_1.5 [19] lazyeval_0.2.0 Formula_1.2-1 assertthat_0.1 iterators_1.0.8 R6_2.2.0

これがこの質問に関連しているかどうかわからないRSQLite_1.1-2 (2.0より前) を使用していることを覚えておいてください

正直なところ、何が起こっているのかわからず、オンラインで何も見つかりませんでした...

更新 I: sqldf_0.4-11 および RSQLite_2.0 にアップグレードしました....それでもこの問題が発生します。また、sqldf (および依存関係) をロードしようとしました...コードはまだ機能しません

更新 II:まず、 G. Grothendieck氏のこの問題への支援と、長年にわたる R への貢献に感謝したいと思います。

この特定の問題について、mtcars を使用してテスト クエリを実行しようとしました。これはコードです:

b<- sqldf("select a.*, b.mpg as test from mtcars as a left join mtcars as b on a.mpg=b.mpg")

このクエリは機能しました!!! . 次に、sqldf 0.4.11 および RSQLite 2.0 に更新した後でも機能しなかったコードを実行します (更新 I を参照)。驚いたことに、動作するようになりました!!!...何が起こったのかわかりませんが、すべての sqldf クエリが動作するようになりました。参考までに...私はAWSで働いています............説明できない奇妙なことが時々起こります....

更新 III問題が戻ってきました。そこで、アップデート II でテスト コードを再度実行します。これは機能します。そして、そのテスト コードを実行した後、すべての sqldf 結合が再び機能します。

0 投票する
1 に答える
568 参照

r - stringdist_join の結果は NA になります

あいまい結合を作成するために stringdist パッケージを試していますが、理解できない問題に遭遇し、答えが見つかりません。これら2つのデータテーブルを「dl」メソッドで結合したいのですが、完全に理解できないNAが生成されます。たぶん、あなたの1人がこれについて説明しています。コード:

ただし、ジャカード方式を使用すると、一致があります。

誰でも明確にできることを願っています。

チアーズドーム

0 投票する
1 に答える
227 参照

r - 類似した (しかし等しくない) 値を持つデータ フレーム内の行を結合します。

私はdf好きです:

chrそして、同じandを共有する行と、同様の開始点と終了点を持つ行を結合したいと考えてstrandいます (たとえば、100 +/- 距離のように)。行結合が実行される列については、SampleID名前とValue. 前の例では、次のようになります。

アイデア?ありがとう!

編集:

R の fuzzyjoin パッケージを見つけました ( https://cran.r-project.org/web/packages/fuzzyjoin/index.html )。誰もこのパッケージの経験がありますか?

EDIT2:

また、変数 (SampleIDまたはValue) の 1 つだけが連結されると便利です。