मेरे पास दो डेटा फ़्रेम हैं:
-
df
जहां के लिए एकलx
एकाधिक मान हैंy
-
matchDf
जो कि परिभाषित करता है कि मैं फिल्टर कोdf का उपयोग करना चाहूंगा
मैं केवल उन पंक्तियों को फ़िल्टर करना चाहूंगा जहां y
कम या बराबर max_y
दिया जाता है x
अंतराल में गिरता है & lt; x_from, x_to)
क्या यह आर में करने के लिए कोई तरीका है (बिना एसक्यूएल मैं उपयोग किया है)?
df & lt; - read.table (हेडर = TRUE, text = 'xy 100 0.1 100 0.2 100 0.3 250 0.2 250 0.3 250 0.4 375 0.2 375 0.25 375 0.35 420 0.15 420 0.16 420 0.17 500 0.23 500 0.55') MatchDf & lt; - read.table (हेडर = TRUE, text = 'x_from x_to max_y 0 300 .2 300 500 .3 500 99 999 .5') लाइब्रेरी (sqldf) sqldf ('डीएफ में शामिल होने से एक। (कुल्हाड़ी & gt; = बी.एक्स_फ्रेम और कुल्हाड़ी & lt; b.x_to और एआई & lt; = b.max_y) ')
इसे आज़माएं:
<प्री> df [df $ y & lt; = matchDf $ max_y [कट (df $ x, c (0, matchDf $ x_to))],] xy 1 100 0.10 2 100 0.20 4 250 0.20 7 375 0.20 8 375 0.25 10 420 0.15 11 420 0.16 12 420 0.17 13 500 0.23
यहाँ क्या हो रहा है कि कट आपको
matchDf < / कोड>
df
में प्रत्येक अवलोकन होना चाहिए। उसके बाद, आप इसे केवल एक स्थितीय पंक्ति निष्कर्षण वेक्टर के रूप में उपयोग करते हैं, और y
के लिए सशर्त रिश्ते को और lt का उपयोग करते हैं। ; =
।
यह देखने के लिए कि कैसे स्तर लेबल अप्रासंगिक हैं, क्योंकि कट काम करता है, बस इसे अभिव्यक्ति से हटाएं:
& gt; कट (डीएफ $ x, सी (0, मैचडीएफ $ x_ टू)) [1] (0,300) (0,300) (0,300) (0,300) (0,300) (0,300) (300,500) (300,500) (300,500) (300,500) (300,500 ] (300,500) (300,500) (300,500) स्तर: (0,300) (300,500) (500,1e + 05)
[
निकालने के लिए अंतर्निहित पूर्णांक मानों का उपयोग करता है।
No comments:
Post a Comment