मेरे पास यह डेटा है
RES RANK1 RANK2 RANK3 RANK4 RANK5
1 3 3 5 16 1
2 3 1 2 5 16
3 3 5 15 10 1
मैं कैसे डेटा को ऐसे पिघलाता हूं कि RANK1 से RANK5 तक के मान परिवर्तनशील बन जाते हैं और RANK1 से RANK5 का मान बन जाता है।
डेटा द्वारा एकत्र किया गया था: (22) आइटमों की सूची में, शीर्ष 5 वरीयताओं का चयन करें।
नए डेटा का विश्लेषण किया जाएगा जैसे कि जवाब बहु प्रतिक्रिया है।
अपेक्षित आउटपुट होगा (उदा। RES = 1)
RES 1 2 3 5 10 15 16
1 RANK5 RANK2 RANK3 RANK4
2 RANK2 RANK3 RANK1 RANK4 RANK5
3 RANK5 RANK1 RANK2 RANK4 RANK3
धन्यवाद!
उत्तर:
जवाब के लिए 3 № 1आप से करेंगे melt
आपका डेटा और फिर dcast
यह। क्योंकि आपके पास प्रत्येक संयोजन के लिए अद्वितीय मूल्य नहीं हैं, आपको एक से अधिक होने पर सभी मूल्यों को रखने के लिए किसी तरह की आवश्यकता होती है (जैसा कि यहां होता है) RES == 1
तथा VALUE == 3
) का है। इस मामले में हम केवल उपयोग करने वाले मानों को संक्षिप्त करते हैं paste
के साथ collapse
तर्क:
dcast( melt( df , measure = 2:6 ) , RES ~ value , value.var = "variable" , fun = function(x) paste(x,collapse=";") , fill = "" )
# RES 1 2 3 5 10 15 16
#1 1 RANK5 RANK1;RANK2 RANK3 RANK4
#2 2 RANK2 RANK3 RANK1 RANK4 RANK5
#3 3 RANK5 RANK1 RANK2 RANK4 RANK3
का असर melt
का उपयोग करते हुए RANK*
माप चर के रूप में कॉलम हमें आईडी वेरिएबल्स के दो कॉलम के साथ एक लंबा डेटासेट देना है
head( melt( df , measure = 2:6 ) )
# RES variable value
#1 1 RANK1 3
#2 2 RANK1 3
#3 3 RANK1 3
#4 1 RANK2 3
#5 2 RANK2 1
#6 3 RANK2 5