जवाबों:
यहाँ एक लाइनर है ...
y[sort(order(y)[x])]
[संपादित करें:] यह निम्नानुसार टूट जाता है:
order(y) #We want to sort by y, so order() gives us the sorting order
order(y)[x] #looks up the sorting order for each x
sort(order(y)[x]) #sorts by that order
y[sort(order(y)[x])] #converts orders back to numbers from orders
xऔर y। x <- c(1,4,2); y <- c(1,2,4)उदाहरण के लिए।
और इसका क्या
x[order(match(x,y))]
आप xएक आदेशित कारक में बदल सकते हैं :
x.factor <- factor(x, levels = y, ordered=TRUE)
sort(x)
sort(x.factor)
जाहिर है, अपने नंबरों को कारकों में बदलना मौलिक रूप से कोड डाउनस्ट्रीम प्रतिक्रिया के तरीके को बदल सकता है x। लेकिन चूंकि आपने हमें इसके बारे में कोई संदर्भ नहीं दिया कि आगे क्या होता है, मैंने सोचा कि मैं इसे एक विकल्प के रूप में सुझाऊंगा।
xछँटाई वाले वेक्टर में नहीं होते yहैं:x <- c(2, 2, 3, 4, 1, 4, 4, 3, 3, 6); y <- c(4, 2, 1, 3); as.numeric(as.character(sort(factor(x, unique(c(y, x))))))
मामले में आपको "y" पर आदेश प्राप्त करने की आवश्यकता है, भले ही वह संख्या या वर्ण हो:
x[order(ordered(x, levels = y))]
4 4 4 2 2 1 3 3 3
चरणों द्वारा:
a <- ordered(x, levels = y) # Create ordered factor from "x" upon order in "y".
[1] 2 2 3 4 1 4 4 3 3
Levels: 4 < 2 < 1 < 3
b <- order(a) # Define "x" order that match to order in "y".
[1] 4 6 7 1 2 5 3 8 9
x[b] # Reorder "x" according to order in "y".
[1] 4 4 4 2 2 1 3 3 3
[ संपादित करें: स्पष्ट रूप से इयान के पास सही दृष्टिकोण है, लेकिन मैं इसे पोस्टीरिटी के लिए छोड़ दूंगा।]
आप अपने y वेक्टर पर अनुक्रमणिका के बिना लूप के बिना ऐसा कर सकते हैं। एक वृद्धिशील संख्यात्मक मान को y में जोड़ें और उन्हें मर्ज करें:
y <- data.frame(index=1:length(y), x=y)
x <- data.frame(x=x)
x <- merge(x,y)
x <- x[order(x$index),"x"]
x
[1] 4 4 4 2 2 1 3 3 3
x <- c(2, 2, 3, 4, 1, 4, 4, 3, 3)
y <- c(4, 2, 1, 3)
for(i in y) { z <- c(z, rep(i, sum(x==i))) }
Z में परिणाम: 4 4 4 2 2 1 3 3 3
महत्वपूर्ण कदम:
for (i in y) - ब्याज के तत्वों पर लूप्स।
z <- c (z, ...) - बदले में प्रत्येक उपप्रकार को समेटता है
rep (i, sum (x == i)) - दोहराता है i (ब्याज का वर्तमान तत्व) sum (x == i) बार (हमने x में कितनी बार कितनी संख्या पाई)।