سؤال

لدي ناقل X يحتوي على أرقام إيجابية أريد أن أقوم بتقديرها. بالنسبة لهذا المتجه ، أريد أن تظهر الأرقام [0 ، 10) كما هي موجودة في المتجه ، ولكن الأرقام [10 ، ∞) لتكون 10+.

أنا استخدم:

x <- c(0,1,3,4,2,4,2,5,43,432,34,2,34,2,342,3,4,2)
binned.x <- as.factor(ifelse(x > 10,"10+",x))

ولكن هذا يشعر كلوجي بالنسبة لي. هل يعرف أحد حلًا أفضل أو نهجًا مختلفًا؟

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

المحلول

ماذا عن cut:

binned.x <- cut(x, breaks = c(-1:9, Inf), labels = c(as.character(0:9), '10+'))

الذي يحصد:

 # [1] 0   1   3   4   2   4   2   5   10+ 10+ 10+ 2   10+ 2   10+ 3   4   2  
 # Levels: 0 1 2 3 4 5 6 7 8 9 10+

نصائح أخرى

أنت تسأل غير متسق.
في وصف 10 ينتمي إلى مجموعة "10+" ، ولكن في الكود 10 هو مستوى منفصل. إذا 10 ينبغي كن في مجموعة "10+" ، ثم يجب أن تكون رمز

as.factor(ifelse(x >= 10,"10+",x))

في هذه الحالة ، يمكنك اقتطاع البيانات إلى 10 (إذا كنت لا تريد عاملًا):

pmin(x, 10)
# [1]  0  1  3  4  2  4  2  5 10 10 10  2 10  2 10  3  4  2 10
x[x>=10]<-"10+"

هذا سوف يعطيك متجه الأوتار. يمكنك استخدام as.numeric(x) لتحويل مرة أخرى إلى الأرقام (تصبح "10+" NA)، أو as.factor(x) للحصول على نتيجتك أعلاه.

لاحظ أن هذا سيعدل المتجه الأصلي نفسه ، لذلك قد ترغب في النسخ إلى متجه آخر والعمل على ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top