मुझे पता है कि a little programming निश्चित आयाम आवृत्ति सारणी को परिवर्तित करने की अनुमति देता है, जैसा कि लौटाया गया है उदा। table()
द्वारा, अवलोकन डेटा में वापस। तो उद्देश्य वापस एक पंक्ति संख्या है कि इनपुट मैट्रिक्स की संख्याओं का योग से मेल खाती है के साथ एक data.frame()
में इसी प्रकार के एक आवृत्ति तालिका कन्वर्ट करने के लिए ...क्या तालिका() फ़ंक्शन का सामान्य उलटा है?
(flower.freqs <- with(iris,table(Petal=cut(Petal.Width,2),Species)))
Species
Petal setosa versicolor virginica
(0.0976,1.3] 50 28 0
(1.3,2.5] 0 22 50
..., जबकि सेल है मूल्यों इनपुट आयामों से प्राप्त कर रहे हैं:
tableinv <- untable <- function(x) {
stopifnot(is.table(x))
obs <- as.data.frame(x)[rep(1:prod(dim(x)),c(x)),-length(dim(x))-1]
rownames(obs) <- NULL; obs
}
> head(tableinv(flower.freqs)); dim(tableinv(flower.freqs))
Petal Species
1 (0.0976,1.3] setosa
2 (0.0976,1.3] setosa
3 (0.0976,1.3] setosa
4 (0.0976,1.3] setosa
5 (0.0976,1.3] setosa
6 (0.0976,1.3] setosa
[1] 150 2
> head(tableinv(Titanic)); nrow(tableinv(Titanic))==sum(Titanic)
Class Sex Age Survived
1 3rd Male Child No
2 3rd Male Child No
3 3rd Male Child No
4 3rd Male Child No
5 3rd Male Child No
6 3rd Male Child No
[1] TRUE
मैं Obvio हूँ:
Petal Species
1 (0.0976,1.3] setosa
2 (0.0976,1.3] setosa
3 (0.0976,1.3] setosa
# ... (150 rows) ...
कुछ फेरबदल के साथ
मैं एक मोटा प्रोटोटाइप कि भी उच्च आयामी आदानों पचाने चाहिए निर्माण हमें गर्व है कि इस bricolage बहु-गुण data.frame()
उच्च 0 आयामी आवृत्ति सारणी जैसे Titanic
से पुनर्निर्मित करता है - लेकिन वहां एक स्थापित (अंतर्निहित, युद्ध-परीक्षण) सामान्य तालिका() के विपरीत है, आदर्श रूप से जो कि इस पर निर्भर नहीं है विशिष्ट लाइब्रेरी, जो अनलॉक किए गए आयामों को संभालने के बारे में जानता है, जिसे अनुकूलित किया गया है ताकि यह भारी इनपुट पर चकित न हो, और यह उचित रूप से टेबल इनपुट के साथ सौदा करता है जो कारक के साथ-साथ गैर-कारक अवलोकन इनपुट के अनुरूप होगा?
पता नहीं है कि 'टेबल' के विपरीत है या नहीं, लेकिन मुझे लगता है कि आप अपना कोड थोड़ा सुधार सकते हैं। उदाहरण के लिए, मैं बस कोशिश करता हूं: 'lev <-expand.grid (dimnames (mytable)); lev [rep (1: nrow (lev), as.vector (mytable)),] – nicola
@ निकोला: आप हैं ठीक है, धन्यवाद। और एक और अस्थायी टिप्पणी (जिसे किसी ने जल्द ही वापस ले लिया था) ने यह भी सुझाव दिया कि 'as.data.frame.table() 'हमें आधा रास्ते लाएगा ... – texb
आवश्यक रूप से बेहतर नहीं है, लेकिन एक बार जब आप' as.data.frame 'का उपयोग करते हैं , आप कर सकते हैं: 'डीएफ [प्रतिनिधि (राउनम्स (डीएफ), डीएफ $ फ्रीक), -नकोल (डीएफ)] 'जो अधीर रूप से थोड़ा सा सरल लगता है। – BrodieG