How to update R data.frame column values efficiently? -


मेरे पास यह टेबल ए है

  mpg RX4 21.0 वाग 21.0 डैटसन 22.8 ड्राइव 21.4 स्पोर्टबाउट 18.7 बहादुर 18.1 डस्ट 14.3 मर्क 24.4  

अब मेरे पास एक टेबल बी है

  mpg RX4 60.0 Wag 60.0 Datsun 70.8  
< P> मैं क्या करना चाहता हूँ तालिका बी के अनुसार तालिका ए के एमजीपी मूल्य को अद्यतन करना है, मैं जावा में hashmap का उपयोग कर आसानी से कर सकता हूं, क्या मैं जान सकता हूँ कि आर में करने का कारगर तरीका क्या है?

< पी> वास्तव में बहुत बहुत धन्यवाद df1

आप मैच का उपयोग कर सकते हैं / Code> (पहले डाटासेट) और df2 (दूसरा) और उसके बाद इसे mpg में df1 में से उन मूल्यों को बदलने के लिए एक अनुक्रमणिका के रूप में उपयोग करें df2

  इंडक्स & lt; - मैच (पंक्ति.नाम (df2), पंक्ति.नाम (df1)) df1 $ mpg [indx] & lt; - df2 $ mpg [Indx]  

या आप कॉम्पैक्ट @digEmAll

  df1 [row.names (df2) द्वारा प्रदत्त समाधान का उपयोग कर सकते हैं। , 'Mpg']  

अद्यतन

df2 में कुछ तत्वों के बारे में नई जानकारी का उपयोग नहीं कर रहे हैं < कोड> df1 और उन पंक्तियों को `df1:

  indx & lt; - मैच (पंक्ति.नाम (डीएफ 2), पंक्ति.नाम (डीएफ 1)) में जोड़ना चाहता है indx1 & lt; - indx [! Is.na (indx)] indx2 & lt; - मैच (पंक्ति.नाम (df1), पंक्ति.नाम (df2)) इंडक्स 22 & lt; - indx2 [! Is.na (indx2)] df1 $ mpg [indx1 ] & Lt; - df2 $ mpg [indx22] df1N & lt; - आरबीआईडी ​​(डीएफ 1, डीएफ 2 [सेटडीफ (rownames (df2), rownames (df1) )), डॉप = फॉल्स]) df1N # एमपीजीजी # आरएक्स 4 60.0 # वैग 60.0 # डायसून 70.8 # ड्राव 21.4 # सपोर्टबाउट 18.7 # वेलियन 18.1 # डस्टे 14.3 # एमर्सक 24.4 # मजदा 45.0 # एमरीजरी 42.0   

या आप intersect और setdiff

  इंडक्सएन & lt; - intersect (row.names (df1), row.names का उपयोग कर सकते हैं (Df2)) df1 [indxN, 'mpg'] & lt; - df2 [इंडक्सएन, 'एमपीजी'] आरबीआईडीआई (डीएफ 1, डीएफ 2 [सेटडीएफ (राउन्डम्स (डीएफ 2), रैवमेंम्स (डीएफ 1)), ड्रॉप = फॉल्स])   

नया डेटा
  df1 & lt; - संरचना (सूची (mpg = c (21, 21, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4)) , "वाइज", "डस्टे", "वाइजन", "स्पोर्टाबॉउट", "वालियट", "डैसुन", "वाइज", "। "मर्क")) df2 & lt; - संरचना (सूची (mpg = c (45, 60, 60, 42, 70.8))। नाम = "mpg", class = "data.frame", row.names = c ( "मज़्दा", "आरएक्स 4", "वाग्", "मर्क्यूरी", "डैटसन"))  

पुराना डेटा

  df1 & lt; - संरचना ( सूची (एमपीजी = सी (60 , 70, 80.8, 90.4, 18.7, 18.1, 14.3, 24.4, 22.8, 1 9 .2, 17.8), सिल = सी (6 एल, 6 एल, 4 एल, 6 एल, 8 एल, 6 एल, 8 एल, 4 एल, 4 एल, 6 एल, 6 एल), वि = सी (160, 160, 108, 258, 360, 225, 360, 146.7, 140.8, 167.6, 167.6), एचपी = सी (110 एल, 110 एल, 93 एल, 110 एल, 175 एल, 105 एल, 245 एल, 62 एल, 95 एल, 123 एल, 123 एल), ड्रैट = सी (3. 9, 3. 9, 3.85, 3.08, 3.15, 2.76, 3.21, 3.6 9, 3.92, 3.92, 3.92), wt = c (2.62, 2.875, 2.32, 3.215, 3.44, 3.46, 3.57, 3.1 9, 3.15, 3.44, 3.44), qsec = c (16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20, 22.9, 18.3, 18.9), बनाम = सी (0 एल, 0 एल, 1 एल, 1 एल, 0 एल, 1 एल, 0 एल, 1 एल, 1 एल, 1 एल, 1 एल, 1 एल, 1 एल, 1, एल = सी (1 एल, 1 एल, 1 एल, 0 एल, 0 एल, 0 एल, 0 एल, 0 एल, 0 एल, 0 एल, 0 एल), गियर = सी (4 एल, 4 एल, 4 एल, 3 एल, 3 एल, 3 एल, 3 एल, 4 एल, 4 एल, 4 एल, 4 एल), कार्ब = सी (4 एल, 4 एल, 1 एल, 1 एल, 2 एल, 1 एल, 4 एल, 2 एल, 2 एल, 4 एल, 4 एल))। नाम = सी ("mpg "," Cyl "," disp "," hp "," drat "," wt "," qsec "," बनाम "," am "," गियर "," carb "), पंक्ति.नाम = c (" मज़्दा आरएक्स 4 "," माज़दा आरएक्स 4 वाग् "," डैटसन 710 "," हॉरनेट 4 ड्राइव "," हॉरनेट स्पोर्टबाउट "," वालियंट "," डस्टर 360 "," मर्क 240 डी "," मर्क 230 "," मर्क 280 " "मर्क 280 सी"), सीएलए Ss = "data.frame") df2 & lt; - संरचना (सूची (mpg = c (60, 70, 80.8, 90.4), cyl = c (6L, 6L, 4L, 6L), disp = c (160, 160, 108, 258), एचपी = सी (110 एल, 110 एल, 93 एल, 110 एल), ड्रैट = सी (3. 9, 3. 9, 3.85, 3.08), wt = c (2.62, 2.875, 2.32, 3.215), qsec = c (16.46, 17.02, 18.61, 1 9 .4 4), बनाम = सी (0 एल, 0 एल, 1 एल, 1 एल), एम = सी (1 एल, 1 एल, 1 एल, 0 एल), गियर = सी (4 एल, 4 एल, 4 एल, 3 एल), कार्ब = सी 4, एलएल, 1 एल, 1 एल)),। नाम = सी ("एमपीजी", "सीआईएल", "डिस्प", "एचपी", "ड्रैट", "वाईटी", "क्यूसीसी", "बनाम", " , "गियर", "कार्ब"), वर्ग = "डेटा.फ्रेम", पंक्ति.नाम = सी ("माज़दा आरएक्स 4", "माज़दा आरएक्स 4 वाग्", "डैटसन 710", "हॉर्नेट 4 ड्राइव"))  

Comments