dummies = matrix(c(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0), nrow=6, ncol=6)
colnames(dummies) <- c("a","b", "c", "d", "e", "f")
मैं dummies के साथ एक मैट्रिक्सकई शर्तों के साथ पाश के लिए की Vectorisation
> dummies
a b c d e f
[1,] 0 0 0 0 1 0
[2,] 0 0 1 0 0 0
[3,] 1 0 0 0 0 0
[4,] 0 0 0 0 0 1
[5,] 0 1 0 0 0 0
[6,] 0 0 0 1 0 0
मुझे पता है कि मेरी dummies कि लाइन 1 2 के साथ समूहीकृत है, 3 से 4 के साथ में जुड़े हुए हैं, और 5 से 6 के साथ । मैं ऊपर के रूप में एक ही लाइन पर एक ही समूह में उन लोगों के बीच प्रत्येक डमी कोड (1) विभाजित करना चाहते हैं:
> dummies
a b c d e f
[1,] 0.0 0.0 -0.5 0.0 0.5 0.0
[2,] 0.0 0.0 0.5 0.0 -0.5 0.0
[3,] 0.5 0.0 0.0 0.0 0.0 -0.5
[4,] -0.5 0.0 0.0 0.0 0.0 0.5
[5,] 0.0 0.5 0.0 -0.5 0.0 0.0
[6,] 0.0 -0.5 0.0 0.5 0.0 0.0
इस लक्ष्य को हासिल करने के लिए, मैं निम्नलिखित है:
dummies <- ifelse(dummies==1, 0.5, 0)
for (i in 1:nrow(dummies)){
column = which(dummies[i,] %in% 0.5)
if (i %% 2 != 0) {
dummies[i+1, column] <- -0.5
} else {
dummies[i-1, column] <- -0.5
}
}
मेरा सवाल यह है कि क्या मैं इसे वेक्टरिज्ड कोड के साथ प्राप्त कर सकता हूं। मैं इस मामले में ifelse
का उपयोग करने का तरीका नहीं समझ सकता क्योंकि मैं प्रत्येक पंक्ति पर 0.5
खोजने के लिए इसे लाइन इंडेक्सिंग के साथ संयोजित नहीं कर सकता।
'स्वीकृत' उत्तर चुना गया। धन्यवाद। – Tony