2012-06-22 13 views
9

मेरे मामले में मेरे पास संख्यात्मक वेक्टर (भविष्य_प्रिसेस) है। मैं महीनों के लिए संख्या बनाने के लिए किसी अन्य वेक्टर (यहां: pred_commodity_prices $ futuredays) से दिनांक वेक्टर का उपयोग करता हूं। उसके बाद मैं संख्यात्मक वेक्टर को महीनों को बांधने के लिए सीबीआईंड का उपयोग करता हूं। हालांकि, ऐसा हुआ था कि संख्यात्मक वेक्टर गैर-संख्यात्मक बन गया है। क्या आप जानते हैं कि इसका कारण क्या है? जब मैं as.numeric (future_prices) का उपयोग करता हूं तो मुझे अजीब मान मिलते हैं। एक विकल्प क्या हो सकता है? धन्यवादआर: अंकों की सीबीआईआईडी के बाद संख्यात्मक वेक्टर गैर-संख्यात्मक हो रहा है

head(future_prices) 
pred_peak_month_3a pred_peak_quarter_3a 
1   68.33907    62.37888 
2   68.08553    62.32658 

is.numeric(future_prices) 
[1] TRUE 
> month = format(as.POSIXlt.date(pred_commodity_prices$futuredays), "%m") 
> future_prices <- cbind (future_prices, month) 
> head(future_prices) 
    pred_peak_month_3a  pred_peak_quarter_3a month 
    1 "68.3390747063745" "62.3788824938719"  "01" 
is.numeric(future_prices) 
[1] FALSE 

उत्तर

21

कारण यह है कि cbind एक मैट्रिक्स देता है, और एक मैट्रिक्स केवल एक डेटा प्रकार रख सकता है।

n <- 1:10 
b <- LETTERS[1:10] 
m <- cbind(n,b) 
str(m) 
chr [1:10, 1:2] "1" "2" "3" "4" "5" "6" "7" "8" "9" ... 
- attr(*, "dimnames")=List of 2 
    ..$ : NULL 
    ..$ : chr [1:2] "n" "b" 

d <- data.frame(n,b) 
str(d) 
'data.frame': 10 obs. of 2 variables: 
$ n: int 1 2 3 4 5 6 7 8 9 10 
$ b: Factor w/ 10 levels "A","B","C","D",..: 1 2 3 4 5 6 7 8 9 10 
3

?format देखें। format समारोह रिटर्न:

'एक्स' चरित्र एक आम प्रारूप में पहला तर्क 'एक्स' के तत्वों में से अभ्यावेदन युक्त करने के लिए इसी तरह की संरचना की एक वस्तु, और वर्तमान स्थान के कूट में।

?cbind से

, cbind रिटर्न

... संयोजन एक मैट्रिक्स '...' तर्क स्तंभ-वार या पंक्ति-वार। (अपवाद: अगर कोई आदानों या सभी आदानों कर रहे हैं 'शून्य', मान 'शून्य' है।)

और एक मैट्रिक्स के सभी तत्वों को एक ही कक्षा का होना चाहिए, तो सब कुछ करने के लिए मजबूर कर रहा है चरित्र।

+2

मैं तुम्हें data.frame समाधान की तरह पता है, लेकिन अगर आप एक मैट्रिक्स उपयोग करना चाहता था आप सांख्यिक करने के लिए अपने 'month' मजबूर कर सकता है:' के रूप में । संख्यात्मक (माह) 'और आपका सभी डेटा संख्यात्मक होगा। – GSee

-1

F.Y.I.: आप एक data.frame बजाय इस्तेमाल कर सकते हैं
जब एक कॉलम "कारक" होता है, तो बस/सीधे as.numeric का उपयोग करके उस कॉलम में मान बदल जाएगा। उचित तरीका है:

data.frame[,2] <- as.numeric(as.character(data.frame[,2])) 

अधिक जानकारी के खोजें: Converting values to numeric, stack overflow

+0

यह सिर्फ अधिक जानकारी के लिए है। जोहान्स ने पहले ही इस सवाल का जवाब दिया है। –

संबंधित मुद्दे