2013-10-19 8 views
6

मैं अपने डेटा फ्रेम के सभी कॉलम को एक ही पैमाने पर प्राप्त करने की कोशिश कर रहा हूं ..मैं अपने डेटा फ्रेम में प्रत्येक कॉलम को 0-100 स्केल पर कैसे पुन: सहेज सकता हूं? (आर में)

अभी मेरे पास ऐसा कुछ है ... जहां 0-1 स्केल बी पर है एक 100 पैमाने पर है और ग एक 1-5 पैमाने

a b  c 
0 89 4 
1 93 3 
0 88 5 

कैसे मैं इस तरह की एक 100scale को यह मिलेगा पर है ...

a  b  c 
0  89  80 
100 93  60 
0  88  100 

मैं आशा करता हूँ कि कुछ हद तक स्पष्ट है .. मैंने स्केल() को आजमाया है लेकिन इसे काम करने के लिए प्रतीत नहीं होता है।

+0

संबंधित: http://stackoverflow.com/questions/15468866/scaling-a-numeric-matrix-in-r-with-values -0-to-1 –

+0

आपका 'बी' कॉलम उदाहरण में स्केल नहीं किया गया है ... लेकिन मुझे लगता है कि कोई भी होना चाहिए। – beroe

+0

मेरा बी कॉलम पहले से ही 100pt पैमाने पर है, मैं इसे बदलना नहीं चाहता हूं। –

उत्तर

14

का उपयोग scale, अगर dat अपने डेटा फ्रेम का नाम है:

## for one column 
dat$a <- scale(dat$a, center = FALSE, scale = max(dat$a, na.rm = TRUE)/100) 
## for every column of your data frame 
dat <- data.frame(lapply(dat, function(x) scale(x, center = FALSE, scale = max(x, na.rm = TRUE)/100))) 

इस तरह एक साधारण मामला के लिए, आप भी अपनी खुद की समारोह लिख सकते हैं।

fn <- function(x) x * 100/max(x, na.rm = TRUE) 
fn(c(0,1,0)) 
# [1] 0 100 0 
## to one column 
dat$a <- fn(dat$a) 
## to all columns of your data frame 
dat <- data.frame(lapply(dat, fn)) 
+0

यह काम करता प्रतीत होता है लेकिन मेरे सभी 0-1 स्केल कॉलम –

+0

के लिए एनए वापस कर रहा है संभवतः 'अधिकतम' से 'na.rm = TRUE' जोड़ने में मदद मिलेगी। हालांकि मैं आपके डेटा को देखे बिना निश्चित रूप से नहीं बता सकता हूं। –

+0

जिसने चाल की थी! धन्यवाद! –

0

मेरा अनुभव है कि यह अभी भी अनुत्तरित, क्या हुआ अगर स्तंभों में से एक एक -2 था, वर्तमान जवाब एक 0-100 पैमाने का उत्पादन नहीं होता है। जबकि मैं जवाब की सराहना करता हूं, जब मैंने इसका प्रयास किया, तो मेरे पास वेरिएबल हैं जो -100 से 100 हैं और इससे कुछ नकारात्मक अभी भी बाकी है?

मैं मामले में एक समाधान है यह आप पर लागू:

rescale <- function(x) (x-min(x))/(max(x) - min(x)) * 100 
dat <- rescale(dat) 
संबंधित मुद्दे