2012-01-20 15 views
25

मैं दो कॉलम में मानों के अनुसार डेटाफ्रेम की सूची में एक बड़ा डेटाफ्रेम विभाजित करना चाहता हूं। मैं परिणामस्वरूप सूची में सभी डेटाफ्रेम (अंतराल परिवर्तन) पर एक आम डेटा परिवर्तन लागू करना चाहता हूं। मैं स्प्लिट कमांड से अवगत हूं लेकिन इसे एक समय में डेटा के एक कॉलम पर काम करने के लिए मिल सकता है।डेटा के दो कॉलम का उपयोग करके डेटाफ्रेम विभाजित करें और परिणामी डेटाफ्रेम की सूची पर सामान्य परिवर्तन लागू करें

उत्तर

6

कैसे इस एक के बारे में:

library(plyr) 
ddply(df, .(category1, category2), summarize, value1 = lag(value1), value2=lag(value2)) 

plyr पैकेज और ddply() समारोह के लिए एक उत्कृष्ट काम की तरह लगता है। यदि अभी भी खुले प्रश्न हैं तो कृपया कुछ नमूना डेटा प्रदान करें। विभाजन कई स्तंभ पर काम करना चाहिए और साथ ही:

split(mtcars,list(mtcars$cyl,mtcars$gear)) 

तो फिर तुम इस पर lapply उपयोग कर सकते हैं करने के लिए:

df<- data.frame(value=rnorm(100), class1=factor(rep(c('a','b'), each=50)), class2=factor(rep(c('1','2'), 50))) 
g <- c(factor(df$class1), factor(df$class2)) 
split(df$value, g) 
+0

उत्तर के लिए धन्यवाद! यह पता लगाया गया कि मुझे एक सूची में विभाजित चर डालने की आवश्यकता है और उसने दो हिस्सों का उपयोग करके "विभाजन" समस्या का ख्याल रखा। प्लीयर पैकेज पर पढ़ें और यह वास्तव में शक्तिशाली है। हालांकि मैं ऐसा नहीं कर सकता जो मैं चाहता हूं। इस आदेश का प्रयास किया: llply (1: लंबाई (सूची), फ़ंक्शन (i) {temp <-List [[i]] $ a; सूची [[i]] $ b <-append (head (temp, -1), na, after = 0)}) और 'सूची' में निहित प्रत्येक डेटाफ्रेम में एक नया चर 'बी' खोजने की उम्मीद है। आदेश स्क्रीन पर परिणाम सूची [[i]] $ b प्रिंट करता है। मैंने क्या गलत समझा है? – user1160760

38

आप सभी कारकों आप एक सूची में से विभाजित करना चाहते हैं, उदाहरण के लिए डाल करने के लिए की जरूरत है आप और क्या करना चाहते हैं।

संबंधित मुद्दे