r - किसी डेटा के स्तर पर आधारित डेटा.फ्रेम को नए डेटा में विभाजित करें। फ्रेम




r-faq (2)

मुझे लगता है कि split वही करता है जो आप चाहते हैं।

ध्यान दें कि एक्स डेटा फ्रेम की एक सूची है, जैसा कि str द्वारा देखा गया है:

X <- split(df, df$g)
str(X)

यदि आप समूह जी नामों के साथ व्यक्तिगत ऑब्जेक्ट चाहते हैं तो आप एक्स के तत्वों को उन नामों की वस्तुओं से split करने के लिए असाइन कर सकते हैं, हालांकि यह अतिरिक्त काम की तरह लगता है जब आप सूची split से डेटा फ्रेम को इंडेक्स कर सकते हैं।

#I used lapply just to drop the third column g which is no longer needed.
Y <- lapply(seq_along(X), function(x) as.data.frame(X[[x]])[, 1:2]) 

#Assign the dataframes in the list Y to individual objects
A <- Y[[1]]
B <- Y[[2]]
C <- Y[[3]]
D <- Y[[4]]
E <- Y[[5]]

#Or use lapply with assign to assign each piece to an object all at once
lapply(seq_along(Y), function(x) {
    assign(c("A", "B", "C", "D", "E")[x], Y[[x]], envir=.GlobalEnv)
    }
)

ग्लोबल पर्यावरण उपयोग list2env lapply को असाइन करने के लिए lapply का उपयोग करने से भी बेहतर या संपादित करें :

names(Y) <- c("A", "B", "C", "D", "E")
list2env(Y, envir = .GlobalEnv)
A

मैं एक कारक के स्तर के आधार पर अलग data.frame वस्तुओं को बनाने की कोशिश कर रहा हूं। तो अगर मेरे पास है:

df <- data.frame(
  x=rnorm(25),
  y=rnorm(25),
  g=rep(factor(LETTERS[1:5]), 5)
)

मैं df को अलग-अलग data.frame में कैसे विभाजित कर सकता हूं। g प्रत्येक स्तर के लिए संबंधित x और y मान होते हैं? मैं split(df, df$g) का उपयोग कर अधिकांश तरीकों से प्राप्त कर सकता हूं, लेकिन मैं कारक के प्रत्येक स्तर को अपना data.framedata.frame । ऐसा करने का सबसे अच्छा तरीका क्या है?

धन्यवाद।


आपके पहले प्रश्न के लिए, मेरे पास एक कोड है जिसे मैं सभी एनएएस से छुटकारा पाने के लिए सहज महसूस करता हूं। इसे आसान बनाने के लिए @ ग्रेगोर के लिए धन्यवाद।

final[!(rowSums(is.na(final))),]

दूसरे प्रश्न के लिए, कोड पिछले समाधान से सिर्फ एक विकल्प है।

final[as.logical((rowSums(is.na(final))-5)),]

ध्यान दें -5 आपके डेटा में कॉलम की संख्या है। यह सभी एनएएस के साथ पंक्तियों को खत्म कर देगा, क्योंकि पंक्तिसमूह 5 तक बढ़ जाती है और वे घटाव के बाद शून्य बन जाते हैं। इस बार, as.logical आवश्यक है।





r r-faq