मैं सोच रहा था कि किसी को यह हासिल करने का अच्छा तरीका है या नहीं।डुप्लीकेट बनाने के बिना आर में लुकअप टेबल का उपयोग कैसे करें?
# Create sample data.
item = rep(1:3,2) #6 items
condition = c(rep("control",3), rep("related",3)) #2 conditions
value = c(10,11,12,20,21,22) #6 values
df = data.frame(item, condition, value)
item condition value
1 1 control 10
2 2 control 11
3 3 control 12
4 1 related 20
5 2 related 21
6 3 related 22
मैं भी एक लुक-अप तालिका, जो प्रत्येक समूह के मतलब शामिल है: मैं एक डेटा फ्रेम जहां प्रत्येक अवलोकन (= आइटम), एक विशेष समूह (= हालत) से संबंधित किसी दिए गए महत्व है है :
# Create lookup table.
condition = c("control", "related")
mean = c(11,21)
table = data.frame(condition, mean)
condition mean
1 control 11
2 related 21
मैं अपने मूल डेटा फ्रेम संशोधित करना चाहते हैं, इस तरह के हैं कि यह एक नया स्तंभ, label
, जो कहते हैं में शामिल है "कम" यदि आइटम के मूल्य की तुलना में कम समूह मतलब है, और "उच्च "अन्यथा। यह इस तरह दिखना चाहिए:
# How the output should look like.
# If the item value is less than the group mean, write "low". Write "high" otherwise.
item = rep(1:3,2)
condition = c(rep("control",3), rep("related",3))
value = c(10,11,12,20,21,22)
label = c(rep(c("low", "high", "high"),2))
output = data.frame(item, condition, value, label)
item condition value label
1 1 control 10 low
2 2 control 11 high
3 3 control 12 high
4 1 related 20 low
5 2 related 21 high
6 3 related 22 high
यदि यह सिर्फ समूह अपने मूल डेटा फ्रेम का मतलब कॉपी करने की बात कर रहे थे, मैं merge
का प्रयोग करेंगे। लेकिन मुझे समूह की औसत के आधार पर "कम" या "उच्च" कहने के लिए समूह को एक नया लेबल लिखने के लिए समूह को ध्यान में रखना है।
एक बात है कि मैं करने की कोशिश की पहली तालिका के साथ अपने डेटा फ्रेम मर्ज करने के लिए, और फिर ifelse
का उपयोग साथ मूल्य स्तंभ तुलना करने के लिए स्तंभ मतलब था। यह काम करता है, लेकिन मैं अपने डेटा फ्रेम में माध्य कॉलम के साथ भी समाप्त होता हूं, जिसकी मुझे आवश्यकता नहीं है (मुझे केवल लेबल कॉलम की आवश्यकता है)। बेशक, मैं हाथ से मतलब कॉलम हटा सकता हूं, लेकिन यह गुंजाइश लगता है। तो मैं सोच रहा था: क्या कोई बेहतर/अधिक सुरुचिपूर्ण समाधान जानता है?
धन्यवाद एक गुच्छा!
यदि समूह मतलब dplyr, 11 है चाहिए विवाद एल की स्थिति 11 "उच्च" हो? संबंधों के बारे में क्या? – Minnow
यदि मान समूह के बराबर या उससे अधिक है, तो लेबल को "उच्च" होना चाहिए। लेकिन अगर आप कुछ अलग करना चाहते हैं, तो आप "<" "<=" के साथ बदल सकते हैं। – Sol