Theory
Survey ને એવું ખાનું જોઈએ છે જે ક્યારેય પુછાયું નહોતું
ડીનને ટૂંકી યાદી ગમી, પછી અનિવાર્ય માંગણી આવી: "મને screen time મિનિટમાં નહીં પણ કલાકમાં દેખાડી શકો? અને છાપો ત્યારે roll numbers કાઢી નાખો."
CSV માં કલાકનું કોઈ ખાનું નથી. 60 થી ભાગવા માટે કોઈ 60 students નું ફરી survey કરતું નથી.
Data frame એ file ની થીજેલી તસવીર નથી: એ memory માંની માટી છે. આજની ત્રણ ક્રિયાઓ: જૂનાં ખાનાંમાંથી નવાં ઘડવાં, ખાનાં કાપી નાખવાં, અને ખરાબ લેબલવાળાનું નામ બદલવું.
Theory
રજિસ્ટર પેન્સિલમાં વધે છે
જૂનમાં છપાયેલા વર્ગના રજિસ્ટરમાં આખું સત્ર પેન્સિલનાં ખાનાં ઉમેરાતાં રહે છે: શિક્ષક "હાજરી %" ઉમેરે છે, જે હયાત ખાનાંમાંથી ગણાયું; કોઈ ન વાપરે એવું ખાનું છેકે છે; અસ્પષ્ટ મથાળાનું નામ બદલે છે.
છપાયેલું મૂળ (disk પરનું survey.csv) ક્યારેય બદલાતું નથી: પેન્સિલનું કામ તમારી નકલ પર (memory માંના data frame પર) જીવે છે, જ્યાં સુધી તમે write.csv થી એની નવી file માં નકલ ન કરો.
Practical
ઉમેરો, કાઢો, નામ બદલો
survey <- read.csv("survey.csv") # roll, city, stay, screen
# ADD: derived from existing columns (vectorised: whole column at once)
survey$hours <- survey$screen / 60
# ADD: a logical flag column
survey$heavy <- survey$screen > 180
# ADD: a constant (recycled to every row)
survey$batch <- 2026
# REMOVE: immediate, no confirmation
survey$batch <- NULL
# RENAME by matching the old name (safe, position-independent)
names(survey)[names(survey) == "screen"] <- "screen_min"
# RENAME by position (fragile: breaks if order changes)
# names(survey)[4] <- "screen_min"
names(survey) # "roll" "city" "stay" "screen_min" "hours" "heavy"
# memory only! persist deliberately:
write.csv(survey, "survey_v2.csv", row.names = FALSE)
Theory
વ્યુત્પન્ન ખાનાં જ ખરું કૌશલ્ય કેમ છે
સ્થિર મૂલ્ય ઉમેરવું એ કારકુની કામ છે. વિશ્લેષકની ચાલ છે વ્યુત્પન્ન ખાનું: હયાત ખાનાંમાંથી હરોળે હરોળ ગણાયેલું નવું variable:
- એકમનું રૂપાંતર:
hours <- screen / 60 - નિશાનીઓ:
heavy <- screen > 180 - સંયોજનો:
per_class <- marks / classes
દરેક એક vectorised લીટી છે: કોઈ loop નહીં, દરેક હરોળ એકસાથે. આંકડાશાસ્ત્રમાં આને રૂપાંતરણ કહેવાય છે, અને આગલા પાઠની "data ની સફાઈ" નું અડધું બરાબર આ જ છે: કાચાં ખાનાંને વિશ્લેષણ થઈ શકે એવાં ખાનાંમાં ફેરવવાં.
Quiz
એક student survey$city <- NULL ચલાવે છે, જ્યારે એનો ઇરાદો બીજું ખાનું કાઢવાનો હતો. હવે પરિસ્થિતિ શું છે?
- city તરત જ data frame માંથી ગયું; survey.csv માંથી ફરી આયાત કરીને પાછું મેળવો (file અછૂતી છે)
- R એ કાઢતાં પહેલાં ખાતરી માંગી, એટલે કશું થયું નથી
- ખાનું RStudio ની અંદરના recycle bin માં છે
- Disk પરની CSV file એ પણ પોતાનું city નું ખાનું ગુમાવ્યું
Show the answer
city તરત જ data frame માંથી ગયું; survey.csv માંથી ફરી આયાત કરીને પાછું મેળવો (file અછૂતી છે)
NULL થી કાઢવું તાત્કાલિક અને ચૂપ છે: કોઈ પૂછપરછ નહીં, session ની અંદર કોઈ undo નહીં. બચાવ પેન્સિલ-નકલના model માં છે: data frame એ memory ની નકલ છે, એટલે disk પરની file માં હજી દરેક ખાનું છે: survey <- read.csv("survey.csv") મૂળ પાછું લાવે છે (તમારું બીજું પેન્સિલનું કામ બાદ, એ ફરી કરો). વિકલ્પ B અને C એવી સલામતીની જાળ વર્ણવે છે જે R માં નથી; D memory ને disk સાથે ગૂંચવે છે: ફક્ત write.csv જ file ને અડે છે.
Think first
એ typo જે સંપાદનને બદલે સર્જન કરે છે
એક student screen ના ખાનાને જગ્યાએ જ કલાકમાં ફેરવવા માંગે છે અને ટાઈપ કરે છે: survey$scren <- survey$screen / 60 (જોડણી નોંધો). કોઈ ભૂલ દેખાતી નથી. Tap કરતાં પહેલાં: હવે data frame કેવો દેખાય છે, અને મૌન કેમ જોખમી છે?
Show the answer
R એ કલાક ધરાવતું scren નામનું તદ્દન નવું ખાનું બનાવ્યું, જ્યારે screen જેમનું તેમ પડ્યું છે: અજાણ્યા ખાનાના નામને assign કરવાનો અર્થ છે "એ ઉમેરો", ક્યારેય "તમારો મતલબ આ હતો?" નહીં.
જોખમ મૌન માં છે: અત્યારે કોઈ ભૂલ નહીં, પછી ગૂંચવણ: બે મળતાં આવતાં ખાનાં, અને $screen વાપરતું કોઈ પણ વિશ્લેષણ હજી મિનિટ પર ચાલે છે. ટેવ: ખાનાં પરની શસ્ત્રક્રિયા પછી, names(df) કે str(df) પર નજર નાખો: દસ સેકન્ડની તપાસ આ જાતના દરેક typo ને પકડે છે.
Watch out
ખાનાંની શસ્ત્રક્રિયાના ત્રણ નિયમ
નામ મેળવીને નામ બદલો, સ્થાનથી નહીં: names(df)[names(df) == "old"] <- "new" ખાનાંનો ક્રમ બદલાય તો પણ ટકે છે; [4] ટકતું નથી.
NULL એ કાયમી છે (session માં): શંકા હોય તો નકલ બનાવવાનું પસંદ કરો (df2 <- df[, keep]).
શસ્ત્રક્રિયા પછી names() તપાસો: typos ચૂપચાપ ખાનાં બનાવે છે: એક નજરની તપાસ.
Theory
Attributes, પરીક્ષાનો શબ્દ
અભ્યાસક્રમો ખાનાંને variables કે attributes કહે છે (BCA303નો database નો શબ્દ: એ જ વસ્તુ). એટલે "data frame માં attribute ઉમેરો" જેવી પરીક્ષાની ભાષા બરાબર આજની df$new <- ... ની લીટી છે. આગલો પાઠ એકલાં ખાનાંથી બહાર નીકળીને આખા સફાઈના workflow પર જાય છે: પુનરાવર્તિત નોંધો, ભટકેલું લખાણ, અશક્ય મૂલ્યો: કાચા survey ને એવા data માં ફેરવવો જેનો તમે ડીન સામે બચાવ કરી શકો.
Summary
Key takeaways
- ઉમેરો: df$new <- અભિવ્યક્તિ (vectorised, ઘણી વાર બીજાં ખાનાંમાંથી વ્યુત્પન્ન); સ્થિર મૂલ્યો દરેક હરોળે વહેંચાય છે.
- કાઢો: df$col <- NULL: તાત્કાલિક, ચૂપ, session માટે કાયમી (disk ની file અછૂતી).
- નામ બદલો: names(df)[names(df) == "old"] <- "new": નામ મેળવવું સ્થાન કરતાં સારું.
- વ્યુત્પન્ન ખાનાં (રૂપાંતર, નિશાનીઓ) એ વિશ્લેષકની મુખ્ય રૂપાંતરણની ચાલ છે.
- $ ના assignment માં typos ચૂપચાપ નવાં ખાનાં બનાવે છે: શસ્ત્રક્રિયા પછી names()/str() થી તપાસો.
- બધા ફેરફાર memory માં રહે છે જ્યાં સુધી write.csv એમને કાયમી ન કરે.
- Memory hook: રજિસ્ટર પેન્સિલમાં વધે છે; disk પરનું છાપેલું સ્વચ્છ રહે છે.