2013-08-27 3 views
11

मैं निम्न स्वरूप परिवर्तित करने के लिए कोशिश कर रहा हूँ: द्विआधारी प्रतिक्रिया चर केद्विआधारी प्रतिक्रिया चर करने के लिए कई स्पष्ट चर नयी आकृति प्रदान करना

mydata <- data.frame(movie = c("Titanic", "Departed"), 
        actor1 = c("Leo", "Jack"), 
        actor2 = c("Kate", "Leo"))) 

    movie actor1 actor2 
1 Titanic Leo Kate 
2 Departed Jack Leo 

:

 movie Leo Kate Jack 
1 Titanic 1 1 0 
2 Departed 1 0 1 

मैं समाधान Convert row data to binary columns लेकिन मैं में वर्णित करने की कोशिश की इसे दो चर के लिए काम करने के लिए मिल सकता है, तीन नहीं।

यदि वास्तव में ऐसा करने का एक साफ तरीका है तो मैं वास्तव में सराहना करता हूं।

उत्तर

14

कितना मसाला बहुत अधिक है?

library(dplyr) 
library(tidyr) 

mydata %>% 
    gather(actor,name,starts_with("actor")) %>% 
    mutate(present = 1) %>% 
    select(-actor) %>% 
    spread(name,present,fill = 0) 

     movie Jack Kate Leo 
1 Departed 1 0 1 
2 Titanic 0 1 1 
6

एक तरह से नयी आकृति प्रदान करने के लिए अपने data.framemelt और dcast का उपयोग कर, reshape2 पैकेज के साथ है। dcast में fun.aggregate और fill मानकों, जो को नियंत्रित क्या डालने के बाद भीतरी इलाकों में भरने के लिए चला जाता है के लिए

library(reshape2) 
long.mydata <- melt(mydata, id.vars = "movie") 
wide.mydata <- dcast(long.mydata, movie ~ value, function(x) 1, fill = 0) 

वेतन ध्यान: उदाहरण के लिए।

4

के बाद से वे कहते हैं कि विविधता जीवन का मसाला है, यहाँ आधार आर में एक दृष्टिकोण table का उपयोग कर रहा है:

table(cbind(mydata[1], 
      actor = unlist(mydata[-1], use.names=FALSE))) 
#   actor 
# movie  Jack Leo Kate 
# Departed 1 1 0 
# Titanic  0 1 1 

ऊपर उत्पादन वर्ग table के matrix है। data.frame प्राप्त करने के लिए, as.data.frame.matrix का उपयोग करें।

as.data.frame.matrix(table(
    cbind(mydata[1], actor = unlist(mydata[-1], use.names=FALSE)))) 
#   Jack Leo Kate 
# Departed 1 1 0 
# Titanic  0 1 1 
1

reshape2 -package भी recast समारोह है: यहाँ tidyr के माध्यम से एक समाधान है।

कोड:

library(reshape2) 
recast(mydata, id.var = 'movie', movie ~ value, fun.aggregate = length) 

परिणाम:

 movie Jack Kate Leo 
1 Departed 1 0 1 
2 Titanic 0 1 1 
संबंधित मुद्दे