استخراج مجموعة فرعية من بيانات البيانات بناءً على حالة تتضمن حقلًا

StackOverflow https://stackoverflow.com/questions/3445590

  •  27-09-2019
  •  | 
  •  

سؤال

لدي CSV كبير مع نتائج مسح طبي من مواقع مختلفة (الموقع عامل موجود في البيانات). نظرًا لأن بعض التحليلات خاصة بالموقع وللمراحة ، أود استخراج الأطر الفرعية مع الصفوف فقط من تلك المواقع. يحدث أن الموقع هو الحقل الأول ، لذا نعم ، يمكنني القيام بذلك عن طريق فرز صفوف CSV ، لكنني أود أن أتعلم كيفية القيام بذلك في R لأنني متأكد من أنني سأحتاج إلى هذا للأعمدة الأخرى.

لذلك ، باختصار ، والسؤال هو: بالنظر إلى إطار بيانات FOO ، كيف يمكنني إنشاء شريط إطار بيانات آخر يحتوي فقط على الصفوف من FOO أين foo$location = 'there'?

هل كانت مفيدة؟

المحلول

هنا هما النهجان الرئيسيان. أنا أفضل هذا على قابليته للقراءة:

bar <- subset(foo, location == "there")

لاحظ أنه يمكنك ربط العديد من الشروط مع & و | لإنشاء مجموعات فرعية معقدة.

والثاني هو نهج الفهرسة. يمكنك فهرسة الصفوف في R مع شرائح رقمية أو منطقية. foo$location == "there" إرجاع متجه T و F القيم التي هي نفس طول صفوف foo. يمكنك القيام بذلك لإرجاع الصفوف فقط حيث تعود الحالة بشكل صحيح.

foo[foo$location == "there", ]

نصائح أخرى

فقط لتمديد الإجابة أعلاه ، يمكنك أيضًا فهرسة الأعمدة الخاصة بك بدلاً من تحديد أسماء الأعمدة التي يمكن أن تكون مفيدة أيضًا اعتمادًا على ما تفعله. بالنظر إلى أن موقعك هو الحقل الأول سيبدو هكذا:

    bar <- foo[foo[ ,1] == "there", ]

يعد هذا مفيدًا لأنه يمكنك إجراء عمليات على قيمة العمود الخاصة بك ، مثل الحلق على أعمدة محددة (ويمكنك القيام بنفس الشيء عن طريق فهرسة أرقام الصفوف أيضًا).

هذا مفيد أيضًا إذا كنت بحاجة إلى تنفيذ بعض العمليات على أكثر من عمود واحد لأنه يمكنك بعد ذلك تحديد مجموعة من الأعمدة:

    foo[foo[ ,c(1:N)], ]

أو أعمدة محددة ، كما تتوقع.

    foo[foo[ ,c(1,5,9)], ]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top