मैं आर या पायथन का उपयोग करके पंक्तियों में डेटा के विशिष्ट जोड़े में मूल्यों को स्वैप करना चाहता हूं। मेरे पास पहला डेटाफ्रेम है जिसमें लाइन द्वारा लाइन परीक्षण है, और दूसरा डेटाफ्रेम है जो परीक्षणों में प्रस्तुत शब्दों के क्रम के लिए एक संदर्भ सूची है। जैसा कि पहले डेटाफ़्रेम में कुछ शब्द जोड़े सही क्रम में नहीं हैं, मैं उन शब्दों के विशिष्ट जोड़े को स्वैप करना चाहूंगा जो दूसरे डेटाफ़्रेम के आधार पर क्रम में नहीं हैं।

पहला डेटाफ्रेम इस तरह दिखता है:

SN    word1   word2 

1     dog      cat 

2     mouse    rabbit

3     sheep    goat 

4      ox      snake  

5     cat      dog    

मेरे पास दूसरा डेटाफ्रेम है जो इस तरह दिखता है:

word1   word2

 cat    dog

 mouse  rabbit

 sheep  goat

 snake  ox

मैं जो करना चाहता हूं वह पहले डेटाफ्रेम की पंक्तियों में कुछ मानों को स्वैप करना है जैसे कि शब्द दूसरे डेटाफ्रेम द्वारा निर्दिष्ट क्रम में हैं। उदाहरण के लिए, दूसरा डेटाफ्रेम निर्दिष्ट करता है कि बिल्ली "शब्द 1" है और कुत्ता "शब्द 2" है, इसलिए यदि पहले डेटाफ्रेम में कोई उदाहरण है जहां कुत्ता "शब्द 1" है और बिल्ली "शब्द 2" है, तो मैं आदेश के लिए चाहूंगा स्विच किए जाने वाले शब्द।

अंतिम आउटपुट इस तरह दिखना चाहिए:

SN    word1   word2 

1     cat      dog 

2     mouse    rabbit

3     sheep    goat 

4     snake    ox  

5     cat      dog  

क्या आर या पायथन में इसे हासिल करने का कोई तरीका है? किसी भी तरह की सहायता को आभार समझेंगे!

-2
Anna 9 फरवरी 2021, 06:54

1 उत्तर

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

मान लें कि दो डेटाफ़्रेम को df1 और df2 कहा जाता है, तो एक तरीका यह होगा कि दोनों डेटाफ़्रेम में शब्दों को वर्णानुक्रम में क्रमबद्ध करें और शामिल हों। अंत में df2 में मौजूद ऑर्डर को रखें।

आर में, आप इसे इस प्रकार कर सकते हैं:

library(dplyr)

df1 %>%
  mutate(sort_col1 = pmin(word1, word2), 
         sort_col2 = pmax(word1, word2)) %>%
  left_join(df2 %>%
            mutate(sort_col1 = pmin(word1, word2), 
                    sort_col2 = pmax(word1, word2)), 
            by = c('sort_col1', 'sort_col2')) %>%
  transmute(SN, word1  = word1.y, word2 = word2.y)

#  SN word1  word2
#1  1   cat    dog
#2  2 mouse rabbit
#3  3 sheep   goat
#4  4 snake     ox
#5  5   cat    dog

डेटा

df1 <- structure(list(SN = 1:5, word1 = c("dog", "mouse", "sheep", "ox", 
"cat"), word2 = c("cat", "rabbit", "goat", "snake", "dog")), 
class = "data.frame", row.names = c(NA, -5L))

df2 <- structure(list(word1 = c("cat", "mouse", "sheep", "snake"),
word2 = c("dog","rabbit", "goat", "ox")), 
class = "data.frame", row.names = c(NA, -4L))
0
Ronak Shah 9 फरवरी 2021, 07:43