मेरे पास नीचे डेटाफ्रेम है:

product<-c("ab","ab","ab","ac","ac","ac")
shop<-c("sad","sad","sad","sadas","fghj","xzzv")
category<-c("a","a","a","b","b","b")
tempr<-c(35,35,14,24,14,5)
value<-c(0,0,-6,8,4,0)
store<-data.frame(product,shop,category,tempr,value)



product  shop category tempr value
1      ab   sad        a    35     0
2      ab   sad        a    35     0
3      ab   sad        a    14    -6
4      ac sadas        b    24     8
5      ac  fghj        b    14     4
6      ac  xzzv        b     5     0

मैं इस डेटाफ्रेम को इस तरह बदलना चाहता हूं कि मैं अद्वितीय product नाम रखूं और shop नामों को फ़ील्ड मानों से कॉलम नामों में बदल दूं। मैं इस डेटा फ्रेम को tempr और उसके रिश्तेदार value के संयोजन से भरना चाहता हूं, लेकिन केवल उस मान के लिए जो 0 नहीं है अन्यथा कक्ष खाली होना चाहिए। किसी दुकान में उत्पाद मौजूद नहीं होने की स्थिति में भी सेल खाली होनी चाहिए। अंतिम रूप का एक उदाहरण है:

store2
  product    sad sadas  fghj xzzv
1      ab 14(-6)                 
2      ac        24(8) 14(4)   

यह एक दृष्टिकोण हो सकता है:

library(reshape2)
store2<-dcast(store, product ~ shop,value.var=value)
r
1
firmo23 11 सितंबर 2018, 16:32

1 उत्तर

सबसे बढ़िया उत्तर

मैं नीचे जवाब के साथ आया था। हालांकि, मैंने देखा है कि आपके पास ऐसे रिकॉर्ड हैं जिनमें समान product और shop हैं, लेकिन अलग-अलग tempr और value नंबर हैं। वे आपके द्वारा निर्दिष्ट प्रारूप में एक दूसरे को अधिलेखित कर देंगे, और इसलिए मेरे उदाहरण में भी। आप इन रिकॉर्ड्स से कैसे निपटना चाहते हैं?

store2 <- matrix(NA,ncol=length(unique(store$shop)),nrow=length(unique(store$product)))
colnames(store2) <- unique(store$shop)
rownames(store2) <- unique(store$product)

for(i in 1:ncol(store)) {
  store2[store[i,'product'],store[i,'shop']] <- paste0(store[i,c('tempr')],'(',store[i,'value'],')')
}

एनबी: 'खाली मूल्य' के रूप में अब मैं एनए का उपयोग कर रहा हूं, क्योंकि यह आर का प्रतिनिधित्व है और लापता मूल्यों के लिए अनुशंसित कोडिंग है। आप रिक्त फ़ील्ड के लिए store2 <- matrix('',ncol=......) का उपयोग कर सकते हैं

1
P1storius 11 सितंबर 2018, 17:02