Theory
ડીનને ટૂંકી યાદી જોઈએ છે
ડીન CampusPulse નો સારાંશ વાંચે છે અને સાંકડું કરે છે: "મને ફક્ત 180 મિનિટથી ઉપરના screen time વાળા છાત્રાલયના students દેખાડો: roll numbers અને એમની મિનિટો, બીજું કશું નહીં."
એક હરોળની શરત અને ખાનાંની પસંદગી, એક જ માંગણીમાં. તમે આ આકારનો જવાબ બે વાર આપી ચૂક્યા છો: SQL ના WHERE + SELECT, pandas ના masks + બેવડા કૌંસ.
R નું લખાણ છે વચ્ચે અલ્પવિરામવાળા ચોરસ કૌંસની એક જોડી, અને એ અલ્પવિરામ આખું વ્યાકરણ વહન કરે છે.
Theory
બે ભાગની ઓર્ડરની ચિઠ્ઠી
df[ ___ , ___ ] ને બે ખાલી જગ્યાવાળી ઓર્ડરની ચિઠ્ઠી જેવું વિચારો:
- અલ્પવિરામની ડાબે: કઈ હરોળ (કયા students).
- અલ્પવિરામની જમણે: કયાં ખાનાં (એમના વિશે કઈ હકીકતો).
- કોઈ જગ્યા ખાલી છોડો તો એનો અર્થ એ પરિમાણનું બધું.
df[rows, ]: પસંદ કરેલા students, દરેક હકીકત. df[, cols]: દરેક student, પસંદ કરેલી હકીકતો. અલ્પવિરામ એ ચિઠ્ઠીની ભાગલા રેખા છે: એ ભૂલો અને રસોડું ઓર્ડર ખોટો વાંચે.
Practical
કૌંસનું વ્યાકરણ, પછી subset()
survey <- read.csv("survey.csv") # roll, city, stay, screen
# rows by NUMBER, all columns (empty after comma)
survey[1:5, ]
# rows by CONDITION: the workhorse
survey[survey$screen > 180, ]
# columns by NAME, all rows (empty before comma)
survey[, c("roll", "screen")]
# both at once: the dean's request
survey[survey$stay == "hostel" & survey$screen > 180,
c("roll", "screen")]
# membership test with %in%
survey[survey$city %in% c("Surat", "Navsari"), ]
# subset(): same result, reads like English (no survey$ prefixes)
subset(survey, stay == "hostel" & screen > 180,
select = c(roll, screen))
# keep a result by assigning it
heavy <- subset(survey, screen > 180)
nrow(heavy)
Theory
શરતો: એ જ તર્ક, R ની જોડણીમાં
હરોળની શરતો એ logical vectors છે (syntax ના પાઠનું survey$screen > 180) જે હરોળ પસંદ કરનાર તરીકે વપરાય છે:
- == સમાનતા ચકાસે છે (એકલો = assign કરે છે: જાણીતી લપસણ).
- & અને, | કે, ! નહીં: ઘટકે ઘટક, દરેક બાજુ પોતાની પૂરી સરખામણીમાં:
survey$screen > 180 & survey$stay == "hostel". - %in% સમૂહમાં સભ્યપદ ચકાસે છે: R નું IN.
અનુવાદનું કોષ્ટક: હરોળની શરત = SQL નું WHERE = pandas નું mask; ખાનાંની ખાલી જગ્યા / select = SQL ની SELECT ની યાદી. ત્રીજી ભાષા, એ જ બે ચાલ.
Quiz
એક student survey[survey$screen > 180] (અલ્પવિરામ વગર) ટાઈપ કરે છે, ભારે screen time વાળી હરોળની અપેક્ષાએ. R એ શું સમજ્યું?
- અલ્પવિરામ વગર, R એને હરોળના ગાળણને બદલે ખાનાંની પસંદગી ગણે છે: બે ખાલી જગ્યાવાળી ચિઠ્ઠીને એનો અલ્પવિરામ જોઈએ: survey[survey$screen > 180, ]
- એ એકસરખું જ ચાલે છે: અલ્પવિરામ મરજિયાત શૈલી છે
- એ મળતી હરોળ કાઢી નાખે છે
- R data frame ને screen time પ્રમાણે ક્રમમાં ગોઠવે છે
Show the answer
અલ્પવિરામ વગર, R એને હરોળના ગાળણને બદલે ખાનાંની પસંદગી ગણે છે: બે ખાલી જગ્યાવાળી ચિઠ્ઠીને એનો અલ્પવિરામ જોઈએ: survey[survey$screen > 180, ]
Data frame પર એક જ argument વાળા કૌંસ ખાનાં પસંદ કરે છે, એટલે R logical vector ને ખાનું પસંદ કરનાર તરીકે વાપરવાનો પ્રયાસ કરે છે: ખોટાં ખાનાં કે ભૂલ, ધારેલી હરોળ ક્યારેય નહીં. હરોળ/ખાનાનું વ્યાકરણ સંપૂર્ણપણે એ અલ્પવિરામમાં વસે છે: ડાબે = હરોળ, જમણે = ખાનાં, ખાલી = બધું. df[condition, ] છેલ્લે અલ્પવિરામ અને જગ્યા સાથે લખવાની ટેવ આ bug ને અશક્ય બનાવે છે.
Think first
ડીનની માંગણી, ત્રણ રીતે
ડીનની માંગણી (screen > 180 વાળા છાત્રાલયના students; ફક્ત roll અને screen) આમાં લખો: (1) R ના કૌંસ, (2) R નું subset(), (3) BCA303માં તમે શીખેલું SQL. Tap કરતાં પહેલાં ત્રણેય લખો.
Show the answer
1. survey[survey$stay == "hostel" & survey$screen > 180, c("roll", "screen")]
2. subset(survey, stay == "hostel" & screen > 180, select = c(roll, screen))
3. SELECT roll, screen FROM survey WHERE stay = 'hostel' AND screen > 180;
ત્રણ જોડણી, એક વિચાર: હરોળ ગાળો, ખાનાં પસંદ કરો. જો ત્રણેય જુદા લહેકામાં એક જ વાક્ય જેવાં લાગે, તો ખ્યાલ ઊતરી ગયો છે: એ જ ઓળખ interviews ચકાસે છે.
Watch out
ગાળણની ચાર લપસણ
ખૂટતો અલ્પવિરામ: df[condition, ]: ડાબે ખાલી એટલે હરોળ, જમણે ખાલી એટલે ખાનાં, હંમેશા.
= સામે ==: શરતો == થી સરખાવે છે; કૌંસની અંદર એકલો = ભૂલ છે કે અકસ્માત.
'and' અસ્તિત્વમાં નથી: R ને & અને | જોઈએ, એક જ ampersand (&& એકલાં મૂલ્યો માટે છે, vectors માટે નહીં).
Assign ન કરેલાં પરિણામ અદૃશ્ય થાય છે: ગાળણ છાપીને ભૂલી જાય છે: heavy <- subset(...) થી સાચવો.
Theory
ગાળણ આગળના બધાને ખવડાવે છે
હવેથી તમે જે પણ આંકડો ગણો છો એ ખરેખર "કોઈ ઉપસમૂહનો આંકડો" છે: છાત્રાલયવાળાનો સરેરાશ screen time, વર્ષ 3નું SD, દરેક શહેરનો boxplot. કાપવું એ આંકડાશાસ્ત્રનો સંબંધવાચક શબ્દ છે. આગલા પાઠ: ખાનાં ઉમેરવાં અને નામ બદલવાં (survey ને વ્યુત્પન્ન variables મળે છે), પછી સફાઈ: જ્યાં તમારી શરતોએ ચૂપચાપ છોડી દીધેલાં NA મૂલ્યો આખરે ન્યાયનો સામનો કરે છે.
Summary
Key takeaways
- df[rows, cols]: અલ્પવિરામની ડાબે હરોળ પસંદ થાય, જમણે ખાનાં, ખાલી એટલે બધું.
- હરોળ નંબરથી (1:5), શરતથી (df$screen > 180), ખાનાં નામોના vector થી.
- શરતો & | ! થી જોડો, == થી સરખાવો, %in% થી સભ્યપદ ચકાસો.
- subset(df, શરત, select = cols) એ જ વાત df$ ના prefix વગર કહે છે.
- ભાત = SQL WHERE + SELECT = pandas mask + ખાનાંની યાદી: ત્રીજી ભાષા, એ જ વિચાર.
- ગાળેલાં પરિણામ assign કરો નહીં તો એ છપાઈને અદૃશ્ય થાય છે.
- Memory hook: અલ્પવિરામથી વહેંચાયેલી બે ખાલી જગ્યાવાળી ઓર્ડરની ચિઠ્ઠી.