रेफ़रेन्स द्वारा कॉलम जोड़ना और अपडेट करना

R में data.table के साथ Data Manipulation

Matt Dowle, Arun Srinivasan

Instructors, DataCamp

data.frame के आंतरिक पहलू

मान लीजिए आप कॉलम "y" की दूसरी पंक्ति को 10 करना चाहते हैं

df <- data.frame(x = 1:5, y = 6:10)
df
x  y
1  6
2  7
df$y[2] <- 10
R में data.table के साथ Data Manipulation

data.frame के आंतरिक पहलू

R < v3.1.0 में, इस ऑपरेशन से पूरे data.frame की डीप कॉपी बनती थी

# R v3.1.0 से पहले अंदरूनी तौर पर क्या होता था
tmp <- <deep copy of "df">
tmp$y[2] <- 10
df <- tmp
  • अगर आप यही काम 10GB के data.frame पर करें तो क्या होगा?
R में data.table के साथ Data Manipulation

data.frame के आंतरिक पहलू

  • v3.1.0 में सुधार कर केवल अपडेट हुए कॉलम की डीप कॉपी बनाई गई

  • इस मामले में, नीचे df पर किए ऑपरेशन में सिर्फ a और b कॉलम की डीप कॉपी होती है

df <- data.frame(a = 1:3, b = 4:6, c = 7:9, d = 10:12)
df[1:2] <- lapply(df[1:2], function(x) ifelse(x%%2, x, NA))
df
 a  b c  d
 1 NA 7 10
NA  5 8 11
 3 NA 9 12
R में data.table के साथ Data Manipulation

data.table के आंतरिक पहलू

  • data.table कॉलम्स को जगह पर ही, यानी रेफ़रेन्स द्वारा अपडेट करता है

  • मतलब, परिणाम को किसी वैरिएबल में दोबारा असाइन करने की जरूरत नहीं पड़ती

  • मान बदलते समय किसी कॉलम की कॉपी नहीं बनती

  • कॉलम्स को रेफ़रेन्स से जोड़ने/अपडेट/हटाने के लिए data.table नया ऑपरेटर := उपयोग करता है

R में data.table के साथ Data Manipulation

LHS := RHS फ़ॉर्म

batrips[, c("is_dur_gt_1hour", "week_day") := list(duration > 3600, 
                                                   wday(start_date))]

# एक सिंगल कॉलम जोड़ते समय quotes ज़रूरी नहीं हैं batrips[, is_dur_gt_1hour := duration > 3600]
R में data.table के साथ Data Manipulation

फ़ंक्शनल फ़ॉर्म

batrips[, `:=`(is_dur_gt_1hour = NULL,                  
               start_station = toupper(start_station))] 
R में data.table के साथ Data Manipulation

अभ्यास करते हैं!

R में data.table के साथ Data Manipulation

Preparing Video For Download...