2012-10-15 21 views
5

मेरे पास एक साधारण डेटा फ्रेम कॉलम रूपांतरण है जो एक if/else लूप का उपयोग करके किया जा सकता है, लेकिन मैं सोच रहा था कि ऐसा करने का एक बेहतर तरीका है या नहीं।डेटा फ्रेम में कॉलम मान कैसे बदलें?

प्रारंभिक डेटा फ्रेम है,

df <-data.frame(cbind(x=rep(10:15,3), y=0:8)) 
df 
    x y 
1 10 0 
2 11 1 
3 12 2 
4 13 3 
5 14 4 
6 15 5 
7 10 6 
8 11 7 
9 12 8 
10 13 0 
11 14 1 
12 15 2 
13 10 3 
14 11 4 
15 12 5 
16 13 6 
17 14 7 
18 15 8 

मुझे क्या करना 'y' ऐसी है कि

'0' gets replaced with '2', 
'1' gets replaced with '2.2', 
'2' gets replaced with '2.4', 
... 
... 
'6' gets replaced with '3.2' 
'7' gets replaced with '3.3' 
'8' gets replaced with '10' 
तो

है कि मैं कुछ के साथ अंत की तरह स्तंभ में मानों को बदलने की जरूरत है क्या,

> df 
    x y 
1 10 2.0 
2 11 2.2 
3 12 2.4 
4 13 2.6 
5 14 2.8 
6 15 3.0 
7 10 3.2 
8 11 3.3 
9 12 10.0 
10 13 2.0 
11 14 2.2 
12 15 2.4 
13 10 2.6 
14 11 2.8 
15 12 3.0 
16 13 3.2 
17 14 3.3 
18 15 10.0 

मैंने कई प्रस्ताव खोजे और पाया लेकिन उन्हें काम पर नहीं लाया। प्रयासों में से एक था

> levels(factor(df$y)) <- c(2,2.2,2.4,2.6,2.8,3,3.2,3.3,10) 

Error in levels(factor(df$y)) <- c(2, 2.2, 2.4, 2.6, 2.8, 3, 3.2, 3.3, : 
    could not find function "factor<-" 

लेकिन मुझे ऊपर दिखाया गया त्रुटि संदेश मिलता है।

क्या कोई इस से मेरी सहायता कर सकता है?

+0

क्षमा बेन, मेरी गलती के लिए data.table का उपयोग कर। मैंने बस अपनी मूल पोस्ट को संपादन के साथ संपादित किया। –

उत्तर

5

तथ्य यह है कि y+1 प्रतिस्थापन

कुछ की तरह

replacement <- c(2,2.2,2.4,2.6,2.8,3,3.2,3.3,10) 
df <- within(df, z <- replacement[y+1]) 
के लिए एक सूचकांक है का उपयोग करें

या, syntatic चीनी और स्मृति क्षमता

library(data.table) 
DT <- as.data.table(df) 

DT[, z := replacement[y+1]] 
+0

धन्यवाद मैनेल, आपका सुझाव पूरी तरह से काम कर रहा है! –

3

कैसे के बारे में:

mylevels <- c(2,2.2,2.4,2.6,2.8,3,3.2,3.3,10) 
df$z <- as.numeric(as.character(factor(df$y,labels=mylevels))) 

यह भी मेल खाता है अपने वांछित परिणाम:

transform(df,z=ifelse(y==7,3.3,ifelse(y==8,10,2+y/5))) 
+0

धन्यवाद बेन। आपका सुझाव सिर्फ साथ ही साथ मेल के सुझाव भी काम करता है। –

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