2015-05-20 7 views
5

मेरे पास डेटा फ्रेम है और मैं एक कॉलम मान को n समूहों में विभाजित करना चाहता हूं। इसलिए, मेरे पास लगभग 10k रिकॉर्ड्स के साथ data$dist कॉलम है, जहां अधिकतम मान 23180 और न्यूनतम मान 8951 है। और मैं मानों को समान श्रेणी के 10 समूहों में विभाजित करना चाहता हूं, यानि (23180-8951)/10 = 1423। जिसका अर्थ है कि 8951 और 10374 के बीच सभी मूल्य 1 समूह में जाते हैं। और इसी तरह। मैं यह कैसे कर सकता हूं?आर समूह को डेटा में विभाजित करें

+0

देखें 'quantile' – ctbrown

+0

देखें' cut', 'seq' के साथ उपयोग करें?। 'seq' के बजाय 'क्वांटाइल' का उपयोग किया जाएगा यदि आप प्रति समूह बराबर श्रेणियों की बजाय प्रति समूह के बराबर संख्याओं को देखना चाहते हैं। – Gregor

उत्तर

8

आप नीचे दिए गए खिलौना उदाहरण के रूप में cut और split, उपयोग कर सकते हैं:

set.seed(2015) 
d <- data.frame(i=1:20,z=runif(20)) 
#  i   z 
# 1 1 0.06111892 
# 2 2 0.83915986 
# 3 3 0.29861322 
# 4 4 0.03143242 
# 5 5 0.13857171 
# 6 6 0.35318471 
# 7 7 0.49995552 
# 8 8 0.07707116 
# 9 9 0.65134483 
# 10 10 0.51172371 
# 11 11 0.70285557 
# 12 12 0.39172125 
# 13 13 0.03306277 
# 14 14 0.40940319 
# 15 15 0.74234713 
# 16 16 0.88301877 
# 17 17 0.26623321 
# 18 18 0.07427093 
# 19 19 0.81368426 
# 20 20 0.38194719 

split(d,cut(d$i,seq(0,20,length.out=5))) 
# $`(0,5]` 
# i   z 
# 1 1 0.06111892 
# 2 2 0.83915986 
# 3 3 0.29861322 
# 4 4 0.03143242 
# 5 5 0.13857171 
# 
# $`(5,10]` 
#  i   z 
# 6 6 0.35318471 
# 7 7 0.49995552 
# 8 8 0.07707116 
# 9 9 0.65134483 
# 10 10 0.51172371 
# 
# $`(10,15]` 
#  i   z 
# 11 11 0.70285557 
# 12 12 0.39172125 
# 13 13 0.03306277 
# 14 14 0.40940319 
# 15 15 0.74234713 
# 
# $`(15,20]` 
#  i   z 
# 16 16 0.88301877 
# 17 17 0.26623321 
# 18 18 0.07427093 
# 19 19 0.81368426 
# 20 20 0.38194719 
संबंधित मुद्दे