2011-05-31 21 views
5

में से एक स्तंभ के आदेश मैं इस तरह एक dataframe है:आर: randomize एक data.frame

df1 <- data.frame(A=c("xx", "be", "zz", "jj"), B=c("xyx", "bea", "cce", "ggg"), C=c("ges", "xyz", "cce", "edga")) 

मैं DF1 के आधार पर दो यादृच्छिक dataframe उत्पन्न करना चाहते हैं। प्रत्येक यादृच्छिक डेटाफ्रेम के लिए, मुझे उम्मीद है कि कॉलम ए और कॉलम बी वही रहता है। लेकिन केवल कॉलम सी के क्रम को बदला जा सकता है।

क्या मैं इसे आर के साथ कर सकता हूं? यदि हां, क्या आप मुझे सिखा सकते हैं कि ऐसा कैसे करें?

बहुत बहुत धन्यवाद।

उत्तर

3

आप की तरह कुछ कर सकता है:

data.frame(A=df1$A, B=df1$B, C=sample(df1$C)) 

इस प्रकार, एक नया डेटा फ्रेम जहां ए और बी पुराने डेटा फ्रेम के ए और बी और सी हैं बनाने के लिए एक का उपयोग करके पुराने डेटा फ्रेम के स्तंभ सी के एक यादृच्छिक क्रमपरिवर्तन है sample कमांड। बेशक, आप इस नए डेटा फ्रेम को एक चर, जैसे df2 और df3 असाइन करेंगे।

+1

'नमूना (डीएफ 1 $ सी) 'भी काम करेगा। – Marek

14

किसी मौजूदा डेटा के आधार पर एक नया डेटा-फ्रेम बनाते समय, आर में सामान्य प्रतिमान transform का उपयोग करना है। आपके मामले में आप बस कर सकते हैं:

df2 <- transform(df1, C = sample(C)) 
+0

बहुत सुरुचिपूर्ण! परिवर्तन के बारे में नहीं पता था। वोट देने का हकदार है :) –

+0

शानदार! इसे प्यार करना! – jkenney9