आर

2009-09-28 9 views
6

मैं निम्न स्क्रिप्ट चल रहा हूँ में पंक्तियों और स्तंभों का नाम बदल रहा:आर

cause = c(1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2); 
time = c(1, 1, 2, 3, 3, 2, 2, 1, 1, 2, 2); 
table(cause, time) 

और मैं निम्नलिखित मिल:

 time 
cause  1 2 3 
Maltreat 2 2 2 
Non-Maltr 2 3 0 

:

time 
cause 1 2 3 
    1 2 2 2 
    2 2 3 0 

क्या मैं चाहता हूँ यह है तो, मेरा सवाल है: आप आर में एक तालिका की पंक्तियों का नाम कैसे बदलते हैं?

उसी नस में, आप उस तालिका के कॉलम का नाम कैसे बदलेंगे?

उत्तर

4

ऐसा करने का एक तरीका है इंडेक्स के बजाय स्ट्रिंग्स के कारकों या सूचियों का उपयोग करना। तो:

cause1 <- c("Maltreat", "Non-malt")[cause] 

> print(cause1) 
[1] "Maltreat" "Maltreat" "Maltreat" "Maltreat" "Maltreat" "Non-malt" 
[7] "Maltreat" "Non-malt" "Non-malt" "Non-malt" "Non-malt" 

> table(cause1, time) 
      time 
cause1  1 2 3 
    Maltreat 2 2 2 
    Non-malt 2 3 0 

और, मामले में आप स्मृति या गति के बारे में चिंतित हैं, आर केवल पूरी स्ट्रिंग का एक उदाहरण संग्रहीत के साथ कुशलता से आंतरिक रूप से बात की इस तरह का प्रतिनिधित्व करने में बहुत अच्छा है, और बाकी किया इंडेक्स के साथ।

z <- table(cause, time) 

उपयोग colnames/rownames कार्य::

> df <- data.frame(cause=as.factor(c("Maltreat", "Non-malt")[cause]), time=time) 
> summary(df) 
     cause  time  
Maltreat:6 Min. :1.000 
Non-malt:5 1st Qu.:1.000 
       Median :2.000 
       Mean :1.818 
       3rd Qu.:2.000 
       Max. :3.000 
> table(df) 
      time 
cause  1 2 3 
    Maltreat 2 2 2 
    Non-malt 2 3 0 
5

वहाँ दो आसान तरीके से ऐसा करने के लिए कर रहे हैं:

संयोग से, आप डेटा फ्रेम के साथ लंबे समय में खुश हो जाएगा

> colnames(z) 
[1] "1" "2" "3" 
> rownames(z) 
[1] "1" "2" 

या उपयोग dimnames:

+०१२३५१६४१०
> dimnames(z) 
$cause 
[1] "1" "2" 
$time 
[1] "1" "2" "3" 
> dimnames(z)$cause 
[1] "1" "2" 

किसी भी मामले में, एक वेक्टर के रूप में अपने नाम चुनते हैं और उन्हें आवंटित:

> dimnames(z)$cause <- c("Maltreat","Non-malt") 
> z 
      time 
cause  1 2 3 
    Maltreat 2 2 2 
    Non-malt 2 3 0 
1

मत भूलना plyr के अद्भुत "पुनर्मूल्यांकन" और "नाम बदलने" कमांड!