आज दिमागी फार्ट होने के बाद, मुझे उम्मीद है कि यह एक स्पष्ट सुधार है जो मुझे याद आ रहा है। मेरे पास दो डेटाफ़्रेम हैं, एक एंडपॉइंट का डेटाफ़्रेम है, दूसरा जोखिम कारकों का डेटाफ़्रेम है। मैं सभी संभावित परिणामों के लिए जोखिम कारकों के सभी संभावित संयोजनों के लिए सभी जोखिम अनुपातों की गणना करने जा रहा हूं। मुझे ऐसे फ़ंक्शन की आवश्यकता है जो दो डेटाफ्रेम से सभी संभावित आकस्मिक तालिकाओं को उत्पन्न करे। एक प्रसिद्धि का काम करना अच्छा होगा जो मुझे आकस्मिक तालिका फ़ंक्शन के हिस्से के रूप में कुछ आंकड़े कार्यों को इनपुट करने की अनुमति देता है।

उदाहरण डेटा:

a = c(1,0,1,1,1)
b = c(0,1,1,0,0)
c = c(1,1,0,0,1)
d = c(0,0,0,1,1)

risk = data.frame(a,b)
endpoint = data.frame(c,d)

दोबारा, यदि आप इसे एक लूप के रूप में एक साथ जोड़ सकते हैं जो मुझे आंकड़ों की गणना करने की अनुमति देगा क्योंकि आकस्मिक तालिकाएं बनाई जाती हैं, तो मैं इसकी सराहना करता हूं। यह मुझे मेरे मौजूदा कोड को फ़ंक्शन में कॉपी/पेस्ट करने की अनुमति देगा।

धन्यवाद

0
Phil_T 28 नवम्बर 2017, 00:37

1 उत्तर

सबसे बढ़िया उत्तर

यह पूरी तरह से स्पष्ट नहीं है कि आप कौन सी "आकस्मिक तालिका" बनाने की कोशिश कर रहे हैं, लेकिन निम्नलिखित आपको risk और endpoint के सभी संयोजनों के लिए table आउटपुट देता है:

lapply(data.frame(t(expand.grid(names(risk), names(endpoint), 
                                stringsAsFactors = FALSE)), stringsAsFactors = FALSE), 
       function(x) table(risk[[x[1]]], endpoint[[x[2]]], dnn = x))

ध्यान दें कि दो stringsAsFactors=FALSE हैं, एक expand.grid के लिए, दूसरा data.frame के लिए, क्योंकि दोनों फ़ंक्शन परोक्ष रूप से वर्णों को कारकों में परिवर्तित करते हैं, जो table के लिए वांछनीय नहीं है। उपरोक्त कोड को सरल बनाने के लिए, आप tidyverse समकक्ष का उपयोग कर सकते हैं:

map(as.tibble(t(expand.grid(names(risk), names(endpoint), 
                            stringsAsFactors = FALSE))), 
    ~ table(risk[[.[1]]], endpoint[[.[2]]], dnn = .))

परिणाम:

$X1
   c
a   0 1
  0 0 1
  1 2 2

$X2
   c
b   0 1
  0 1 2
  1 1 1

$X3
   d
a   0 1
  0 1 0
  1 2 2

$X4
   d
b   0 1
  0 1 2
  1 2 0
1
acylam 28 नवम्बर 2017, 17:34