/ / डेटा फ्रेम को फ़िल्टर करना - आर, चयन, फ़िल्टर

एक डेटा फ्रेम फ़िल्टरिंग - आर, चयन, फ़िल्टर

मैंने एक CSV फ़ाइल को मैट्रिक्स रूप में पढ़ा है (जिसमें एम रो और एन कॉलम हैं)। मैं मौखिक रूप में फ़िल्टर आयोजित करके मैट्रिक्स को फ़िल्टर करना चाहता हूं:

कॉलम x से सभी मानों का चयन करें जहां इस पंक्ति में एक और कॉलम का मान "ब्लाब्ला" के बराबर है।

यह डेटाबेस में एक सेलेक्ट स्टेटमेंट की तरह है जहां मैं कहता हूं कि मैं मैट्रिक्स के सबसेट में दिलचस्पी रखता हूं जहां इन बाधाओं को संतुष्ट करने की जरूरत है।

मैं इसे आर में कैसे कर सकता हूं? मेरे पास डेटाफ़्रेम के रूप में डेटा है और हेडर द्वारा इसे एक्सेस कर सकते हैं। data["column_values" = "15"] मुझे उन पंक्तियों को वापस नहीं देता जहां कॉलम नाम_ स्तंभ में केवल 15 मान हैं।

धन्यवाद

उत्तर:

उत्तर № 1 के लिए 15

आपने कहा था कि आप सिर्फ कॉलम x मान चाहते थे जहां column_values ​​15, सही था?

subset(dat, column_values==15, select=x)

मुझे लगता है कि यह एक डेटाफ्रेम के रूप में आ सकता है, इसलिए इसे "आप" को अनलिमिटेड करने की आवश्यकता हो सकती है (और शायद इसे "अनफैक्टर" भी कर सकते हैं)।

> dat
Subject Product
1       1   ProdA
2       1   ProdB
3       1   ProdC
4       2   ProdB
5       2   ProdC
6       2   ProdD
7       3   ProdA
8       3   ProdB
> subset(dat, Subject==2, Product)
Product
4   ProdB
5   ProdC
6   ProdD
> unlist( subset(dat, Subject==2, Product) )
Product1 Product2 Product3
ProdB    ProdC    ProdD
Levels: ProdA ProdB ProdC ProdD
> as.character( unlist( subset(dat, Subject==2, Product) ) )
[1] "ProdB" "ProdC" "ProdD"

यदि आप सभी कॉलम चाहते हैं, तो आप तीसरे तर्क (चयन = तर्क) को छोड़ सकते हैं:

subset(dat, Subject==2 )

Subject Product
4       2   ProdB
5       2   ProdC
6       2   ProdD

जवाब के लिए 8 № 2

ऐसा मानते हुए dat प्रश्न में डेटा फ्रेम है, col स्तंभ का नाम है और "value" वह मूल्य है जो आप चाहते हैं, आप कर सकते हैं

dat[dat$col=="value",]

की सभी पंक्तियों को प्राप्त करता है dat जिसके लिए dat$col=="value", और सभी कॉलम।


जवाब के लिए 4 № 3

सबसे पहले, ध्यान दें कि ए matrix और ए data.frame आर। में अलग-अलग चीजें हैं data.frame (जैसा है वैसा करके लौटा है read.csv())। data.frameस्तंभों का नाम दिया गया है (यदि आप उन्हें नहीं देते हैं, तो उन्हें आपके लिए सामान्य बनाए जाते हैं)।

आप सब्मिट कर सकते हैं a data.frame दोनों पंक्तियों को इंगित करके कि आप कौन सी पंक्तियाँ चाहते हैं और / या आपको कौन से कॉलम चाहिए। यह निर्दिष्ट करने का सबसे आसान तरीका है कि कौन सी पंक्तियाँ एक तार्किक वेक्टर के साथ हैं, अक्सर विशिष्ट स्तंभों का उपयोग करके तुलना से बाहर बनाया जाता है data.frame। उदाहरण के लिए data[["column values"]] == "15" एक तार्किक वेक्टर बनाता है जो है TRUE यदि कॉलम में संबंधित प्रविष्टि है column values स्ट्रिंग है "15" (क्योंकि यह उद्धरण में है, यह एक स्ट्रिंग है, संख्या नहीं है)। आप के रूप में आप के रूप में एक चयन मानदंड के रूप में जटिल कर सकते हैं (तार्किक वैक्टर के साथ संयोजन) & तथा |) आप चाहते हैं पंक्तियों को निर्दिष्ट करने के लिए। यह वेक्टर अनुक्रमण में पहला तर्क बन जाता है।

स्तंभ नामों या संख्याओं की एक सूची दूसरा तर्क हो सकती है। यदि या तो तर्क गायब है, सभी पंक्तियों (या स्तंभों) को मान लिया गया है

यह सब एक साथ रखकर, आपको उदाहरण मिलते हैं

data[data[["column values"]] == "15", ]

या वास्तविक डेटा सेट का उपयोग कर (mtcars)

mtcars[mtcars$am == 1, ]
mtcars[mtcars$am == 1 & mtcars$hp > 100, "mpg"]
mtcars[mtcars$am == 1 & mtcars$hp > 100, "mpg", drop=FALSE]
mtcars[mtcars$hp > 100, c("mpg", "carb")]

प्रत्येक शर्त (पहले तर्क, उदा। mtcars$am == 1 & mtcars$hp > 100) कैसे अनुक्रमण काम करता है की एक बेहतर समझ पाने के लिए लौटें।