लघु संस्करण: मैं डेटा फ्रेम के भीतर मूल्यों को किसी अन्य डेटा फ्रेम में प्राप्त स्ट्रिंग के साथ कैसे बदलूं?मैं आर में स्ट्रिंग के साथ डेटा फ्रेम के भीतर मूल्यों को कैसे बदलूं?
लंबा संस्करण: मैं एक जीवविज्ञानी हूं जो मधुमक्खी की कई प्रजातियों के साथ काम कर रहा है। मेरे पास हजारों मधुमक्खियों के साथ एक डेटा सेट है। प्रत्येक पंक्ति में उस नमूने के बारे में सभी प्रासंगिक जानकारी के साथ एक अद्वितीय मधुमक्खी आईडी # है (कैप्चर, जीपीएस स्थान आदि का डेटा)। प्रत्येक मधुमक्खी के लिए प्रजातियों की जानकारी दर्ज नहीं की गई है क्योंकि उन्हें आईडी में लंबा समय लगता है। जब IDing, मैं मधुमक्खियों के सौ के साथ, एक ही प्रजाति के सभी के साथ समाप्त होता है। मैं इन्हें एक अलग डेटा फ्रेम में दर्ज करता हूं। मैं कोड लिखने की कोशिश कर रहा हूं जो मूल डेटा फ़ाइल को प्रजातियों की जानकारी (परिवार, जीनस, प्रजातियां, लिंग इत्यादि) के साथ अपडेट करेगा क्योंकि मैं मधुमक्खियों को आईडी करता हूं। वर्तमान में, मूल डेटा फ़ाइल में, प्रजातियों की जानकारी खाली है और आर के भीतर एनए के रूप में व्याख्या की गई है। मैं आर को सभी अद्वितीय मधुमक्खी आईडी # ढूंढना चाहता हूं और प्रजातियों की जानकारी भरना चाहता हूं, लेकिन मुझे यह समझने में परेशानी हो रही है कि कैसे एक स्ट्रिंग (उदाहरण के लिए "Andrenidae") के साथ लागू नहीं मान की जगह
यहाँ मैं क्या करना है कोशिश कर रहा हूँ का एक सरल उदाहरण है:
rawData<-data.frame(beeID=c(1:20),family=rep(NA,20))
speciesInfo<-data.frame(beeID=seq(1,20,3),family=rep("Andrenidae",7))
rawData[rawData$beeID == 4,"family"] <- speciesInfo[speciesInfo$beeID == 4,"family"]
तो, मैं चीजों की जगह कर रहा हूँ के रूप में मैं चाहता हूँ, लेकिन एक साथ परिवार के नाम की बजाय संख्या (एक स्ट्रिंग)। क्या मैं अंत में करना चाहते हैं किसी भी सलाह के लिए अग्रिम में सभी प्रजातियों की जानकारी में जोड़ने के लिए एक छोटे से पाश, उदा .:
for (i in speciesInfo$beeID){
rawData[rawData$beeID == i,"family"] <- speciesInfo[speciesInfo$beeID == i,"family"]
}
धन्यवाद लिखने है!
चीयर्स,
ज़क
संपादित करें:
मैं सिर्फ इतना है कि पहले दो विधियों के नीचे एक नया स्तंभ, हर बार जोड़ने समस्या का कारण बन जो देखा है कि अगर मैं प्रजातियों की जानकारी कई बार जोड़ने की जरूरत (जो मैं आमतौर पर करता हूं)। उदाहरण के लिए:
rawData<-data.frame(beeID=c(1:20),family=rep(NA,20))
Andrenidae<-data.frame(beeID=seq(1,20,3),family=rep("Andrenidae",7))
Halictidae<-data.frame(beeID=seq(1,20,3)+1,family=rep("Halictidae",7))
# using join
library(plyr)
rawData <- join(rawData, Andrenidae, by = "beeID", type = "left")
rawData <- join(rawData, Halictidae, by = "beeID", type = "left")
# using merge
rawData <- merge(x=rawData,y=Andrenidae,by='beeID',all.x=T,all.y=F)
rawData <- merge(x=rawData,y=Halictidae,by='beeID',all.x=T,all.y=F)
क्या कॉलम को तोड़ने का कोई तरीका है ताकि मेरे पास एक, एकीकृत डेटा फ्रेम हो? या हर बार एक नया कॉलम जोड़ने के बजाय कच्चे डेटा को अपडेट करने का एक तरीका? अग्रिम में धन्यवाद!
अद्भुत में रुचि रखते हैं है, मदद के लिए धन्यवाद! – Arturito