1. Write R scripts for each of the following
  1. Create a data frame using the data below. id={7,11,8,14,17,13,5,9,10,1} read={47,44,57,60,73,44,68,34,52,60} write={59,33,44,46,57,46,65,60,52,55}
  2. Return a subset of rows, where read more than or equal to 55 and order the rows by read column.
  3. Return the id (descending) in vector, where write more than or equal to 50.
  4. Return a subset of rows, where duplicate value in read.
  5. Create a new column RW that measure the different between read and write.
  6. Create a new column Status that return R if RW is positive, E if RW is 0 and W if RW is negative.
library(dplyr)
df<-data.frame(
  "id"=c(7,11,8,14,17,13,5,9,10,1),
  "read"=c(47,44,57,60,73,44,68,34,52,60),
  "write"=c(59,33,44,46,57,46,65,60,52,55)
)
arrange(filter(df,read>=55),read)
arrange(filter(df,write>=50),desc(id))$id
[1] 17 10  9  7  5  1
filter(df,duplicated(df$read))
df<-mutate(df,RW=abs(read-write))
r<-function(RW){
  res=c()
  for (i in RW){
    if (i>0){
      res<-c(res,"R")
    } else if (i==0){
      res<-c(res,"E")
    } else{
      res<-c(res,"W")
    }
  }
  return(res)
}
df<-mutate(df,Status=r(RW))
df
  1. Write R scripts for each of the following
  1. Create a data frame using the data below. matric={“S111”, “S112”, “S115”, “S124”, “S245”, “S331”} name={“Ahmad”, “Chong”, “Mutu”, “Paul”, “Siti”, “Zaidi”} test={26, 15, 21, 24, 24, 19} asgn={17, 11, 13, 15, 14, 15} post={18, 15, 17, 12, 17, 16} final={29, 10, 19, 14, 28, 27}
  2. Return the name in vector, where matric begin with S1.
  3. Create a new column CA after the asgn column that add the value of test and asgn.
  4. Create a new column SA after the final column that add the value of post and final.
  5. Create a new column Total that add the value SA and CA.
  6. Create a new column Grade that return the grade based on the Total value using the table below 90 – 100 A+ 80 – 89 A 75 – 79 A70 – 74 B+ 65 – 69 B 60 – 64 B- 55 – 59 C+ 50 – 54 C 45 – 49 C40 - 44 D+ 35 – 39 D 0 - 34 F
  7. Calculate the mean and standard deviation of the subject.
  8. Get the matric and name of student with highest score and lowest score.
  9. Get the number of students that passed and failed the subject given the passing mark is at least 65.
df<-data.frame(
  matric=c("S111", "S112", "S115", "S124", "S245", "S331"),
  name=c("Ahmad", "Chong", "Mutu", "Paul", "Siti", "Zaidi"),
  test=c(26, 15, 21, 24, 24, 19),
  asgn=c(17, 11, 13, 15, 14, 15),
  post=c(18, 15, 17, 12, 17, 16),
  final=c(29, 10, 19, 14, 28, 27)
)
filter(df,startsWith(matric,"S1"))$name
[1] "Ahmad" "Chong" "Mutu"  "Paul" 
df<-mutate(df,CA=test+asgn,.after=asgn)
df<-mutate(df,SA=post+final,.after=final)
df<-mutate(df,total=CA+SA)
grade<-function(scores){
  grades<-c()
  for (score in scores){
    if (score >=90) {
      grades<-c(grades,"A+")
    } else if (score >=80) {
      grades<-c(grades,"A")
    } else if (score >=75){
      grades<-c(grades,"A-")
    } else if (score >=70) {
      grades<-c(grades,"B+")
    } else if (score >=65) {
      grades<-c(grades,"B")
    } else if (score >=60){
      grades<-c(grades,"B-")
    } else if (score >=55) {
      grades<-c(grades,"C+")
    } else if (score >=50) {
      grades<-c(grades,"C")
    } else if (score >=45){
      grades<-c(grades,"C-")
    } else if (score >=40) {
      grades<-c(grades,"D+")
    } else if (score >=35) {
      grades<-c(grades,"D")
    } else {
      grades<-c(grades,"F")
    }
  }
  return(grades)
}
df<-mutate(df,Grade=grade(total))
df
mean(df$total)
[1] 72.66667
sd(df$total)
[1] 13.86603
filter(df,total==max(total)) %>%
  select(matric,name)
filter(df,total==min(total)) %>%
  select(matric,name)
nrow(filter(df,total>=65))
[1] 5
nrow(filter(df,total<65))
[1] 1
  1. Write R scripts for each of the following using iris dataset.
  1. Create a data frame from the dataset and then display the data frame in a spreadsheet-style.
  2. Select the versicolor species from the dataset and remove the unnecessary columns.
  3. Sort the data frame by sepal length and width.
  4. Sort the data frame by petal length and width.
  5. Get the summary values for each columns.
library(datasets)
df<-iris
df
select(filter(df,Species=="versicolor"),Species)
arrange(df,Sepal.Length,Sepal.Width)
arrange(df,Petal.Length,Petal.Width)
summarise(df,summary(Sepal.Length),summary(Sepal.Width),summary(Petal.Length),summary(Petal.Width))
Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in dplyr 1.1.0.
Please use `reframe()` instead.
When switching from `summarise()` to `reframe()`, remember that `reframe()` always returns an ungrouped data frame and adjust accordingly.
  1. Write R scripts for each of the following using ToothGrowth dataset.
  1. Create a data frame from the dataset and then display the data frame in a spreadsheet-style.
  2. Split the data frame into two, one with supplement type VC and one with OJ. Display both the data frame in a spreadsheet-style.
  3. Select the tooth length and dose from the VC data frame and then sort the data frame by tooth length.
  4. Select the tooth length and dose from the OJ data frame and then sort the data frame by tooth length (descending).
  5. Get the minimum, maximum and average tooth length by dose for VC and OJ. Show the results in a spreadsheet-style
library(datasets)
df<-ToothGrowth
vc<-filter(df,supp=="VC")
oj<-filter(df,supp=="OJ")
vc
oj
arrange(select(vc,len,dose),len)
arrange(select(oj,len,dose),desc(len))
summarise(vc,min(len),max(len),mean(len))
summarise(oj,min(len),max(len),mean(len))
LS0tDQp0aXRsZTogIkxhYiA2Ig0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KMS4gV3JpdGUgUiBzY3JpcHRzIGZvciBlYWNoIG9mIHRoZSBmb2xsb3dpbmcNCmEuIENyZWF0ZSBhIGRhdGEgZnJhbWUgdXNpbmcgdGhlIGRhdGEgYmVsb3cuDQppZD17NywxMSw4LDE0LDE3LDEzLDUsOSwxMCwxfQ0KcmVhZD17NDcsNDQsNTcsNjAsNzMsNDQsNjgsMzQsNTIsNjB9DQp3cml0ZT17NTksMzMsNDQsNDYsNTcsNDYsNjUsNjAsNTIsNTV9DQpiLiBSZXR1cm4gYSBzdWJzZXQgb2Ygcm93cywgd2hlcmUgcmVhZCBtb3JlIHRoYW4gb3IgZXF1YWwgdG8gNTUgYW5kIG9yZGVyIHRoZSANCnJvd3MgYnkgcmVhZCBjb2x1bW4uDQpjLiBSZXR1cm4gdGhlIGlkIChkZXNjZW5kaW5nKSBpbiB2ZWN0b3IsIHdoZXJlIHdyaXRlIG1vcmUgdGhhbiBvciBlcXVhbCB0byA1MC4NCmQuIFJldHVybiBhIHN1YnNldCBvZiByb3dzLCB3aGVyZSBkdXBsaWNhdGUgdmFsdWUgaW4gcmVhZC4NCmUuIENyZWF0ZSBhIG5ldyBjb2x1bW4gUlcgdGhhdCBtZWFzdXJlIHRoZSBkaWZmZXJlbnQgYmV0d2VlbiByZWFkIGFuZCB3cml0ZS4NCmYuIENyZWF0ZSBhIG5ldyBjb2x1bW4gU3RhdHVzIHRoYXQgcmV0dXJuIFIgaWYgUlcgaXMgcG9zaXRpdmUsIEUgaWYgUlcgaXMgMCBhbmQgVyBpZiBSVyBpcyBuZWdhdGl2ZS4NCmBgYHtyfQ0KbGlicmFyeShkcGx5cikNCmRmPC1kYXRhLmZyYW1lKA0KICAiaWQiPWMoNywxMSw4LDE0LDE3LDEzLDUsOSwxMCwxKSwNCiAgInJlYWQiPWMoNDcsNDQsNTcsNjAsNzMsNDQsNjgsMzQsNTIsNjApLA0KICAid3JpdGUiPWMoNTksMzMsNDQsNDYsNTcsNDYsNjUsNjAsNTIsNTUpDQopDQphcnJhbmdlKGZpbHRlcihkZixyZWFkPj01NSkscmVhZCkNCmFycmFuZ2UoZmlsdGVyKGRmLHdyaXRlPj01MCksZGVzYyhpZCkpJGlkDQpmaWx0ZXIoZGYsZHVwbGljYXRlZChkZiRyZWFkKSkNCmRmPC1tdXRhdGUoZGYsUlc9YWJzKHJlYWQtd3JpdGUpKQ0KcjwtZnVuY3Rpb24oUlcpew0KICByZXM9YygpDQogIGZvciAoaSBpbiBSVyl7DQogICAgaWYgKGk+MCl7DQogICAgICByZXM8LWMocmVzLCJSIikNCiAgICB9IGVsc2UgaWYgKGk9PTApew0KICAgICAgcmVzPC1jKHJlcywiRSIpDQogICAgfSBlbHNlew0KICAgICAgcmVzPC1jKHJlcywiVyIpDQogICAgfQ0KICB9DQogIHJldHVybihyZXMpDQp9DQpkZjwtbXV0YXRlKGRmLFN0YXR1cz1yKFJXKSkNCmRmDQpgYGANCg0KMi4gV3JpdGUgUiBzY3JpcHRzIGZvciBlYWNoIG9mIHRoZSBmb2xsb3dpbmcNCmEuIENyZWF0ZSBhIGRhdGEgZnJhbWUgdXNpbmcgdGhlIGRhdGEgYmVsb3cuDQptYXRyaWM9eyJTMTExIiwgIlMxMTIiLCAiUzExNSIsICJTMTI0IiwgIlMyNDUiLCAiUzMzMSJ9DQpuYW1lPXsiQWhtYWQiLCAiQ2hvbmciLCAiTXV0dSIsICJQYXVsIiwgIlNpdGkiLCAiWmFpZGkifQ0KdGVzdD17MjYsIDE1LCAyMSwgMjQsIDI0LCAxOX0NCmFzZ249ezE3LCAxMSwgMTMsIDE1LCAxNCwgMTV9DQpwb3N0PXsxOCwgMTUsIDE3LCAxMiwgMTcsIDE2fQ0KZmluYWw9ezI5LCAxMCwgMTksIDE0LCAyOCwgMjd9DQpiLiBSZXR1cm4gdGhlIG5hbWUgaW4gdmVjdG9yLCB3aGVyZSBtYXRyaWMgYmVnaW4gd2l0aCBTMS4NCmMuIENyZWF0ZSBhIG5ldyBjb2x1bW4gQ0EgYWZ0ZXIgdGhlIGFzZ24gY29sdW1uIHRoYXQgYWRkIHRoZSB2YWx1ZSBvZiB0ZXN0IGFuZCBhc2duLg0KZC4gQ3JlYXRlIGEgbmV3IGNvbHVtbiBTQSBhZnRlciB0aGUgZmluYWwgY29sdW1uIHRoYXQgYWRkIHRoZSB2YWx1ZSBvZiBwb3N0IGFuZCBmaW5hbC4NCmUuIENyZWF0ZSBhIG5ldyBjb2x1bW4gVG90YWwgdGhhdCBhZGQgdGhlIHZhbHVlIFNBIGFuZCBDQS4NCmYuIENyZWF0ZSBhIG5ldyBjb2x1bW4gR3JhZGUgdGhhdCByZXR1cm4gdGhlIGdyYWRlIGJhc2VkIG9uIHRoZSBUb3RhbCB2YWx1ZSB1c2luZyB0aGUgdGFibGUgYmVsb3cNCjkwIOKAkyAxMDAgQSsNCjgwIOKAkyA4OSBBDQo3NSDigJMgNzkgQQI3MCDigJMgNzQgQisNCjY1IOKAkyA2OSBCDQo2MCDigJMgNjQgQi0NCjU1IOKAkyA1OSBDKw0KNTAg4oCTIDU0IEMNCjQ1IOKAkyA0OSBDAjQwIC0gNDQgRCsNCjM1IOKAkyAzOSBEDQowIC0gMzQgRg0KZy4gQ2FsY3VsYXRlIHRoZSBtZWFuIGFuZCBzdGFuZGFyZCBkZXZpYXRpb24gb2YgdGhlIHN1YmplY3QuDQpoLiBHZXQgdGhlIG1hdHJpYyBhbmQgbmFtZSBvZiBzdHVkZW50IHdpdGggaGlnaGVzdCBzY29yZSBhbmQgbG93ZXN0IHNjb3JlLg0KaS4gR2V0IHRoZSBudW1iZXIgb2Ygc3R1ZGVudHMgdGhhdCBwYXNzZWQgYW5kIGZhaWxlZCB0aGUgc3ViamVjdCBnaXZlbiB0aGUgcGFzc2luZyANCm1hcmsgaXMgYXQgbGVhc3QgNjUuDQpgYGB7cn0NCmRmPC1kYXRhLmZyYW1lKA0KICBtYXRyaWM9YygiUzExMSIsICJTMTEyIiwgIlMxMTUiLCAiUzEyNCIsICJTMjQ1IiwgIlMzMzEiKSwNCiAgbmFtZT1jKCJBaG1hZCIsICJDaG9uZyIsICJNdXR1IiwgIlBhdWwiLCAiU2l0aSIsICJaYWlkaSIpLA0KICB0ZXN0PWMoMjYsIDE1LCAyMSwgMjQsIDI0LCAxOSksDQogIGFzZ249YygxNywgMTEsIDEzLCAxNSwgMTQsIDE1KSwNCiAgcG9zdD1jKDE4LCAxNSwgMTcsIDEyLCAxNywgMTYpLA0KICBmaW5hbD1jKDI5LCAxMCwgMTksIDE0LCAyOCwgMjcpDQopDQpmaWx0ZXIoZGYsc3RhcnRzV2l0aChtYXRyaWMsIlMxIikpJG5hbWUNCmRmPC1tdXRhdGUoZGYsQ0E9dGVzdCthc2duLC5hZnRlcj1hc2duKQ0KZGY8LW11dGF0ZShkZixTQT1wb3N0K2ZpbmFsLC5hZnRlcj1maW5hbCkNCmRmPC1tdXRhdGUoZGYsdG90YWw9Q0ErU0EpDQpncmFkZTwtZnVuY3Rpb24oc2NvcmVzKXsNCiAgZ3JhZGVzPC1jKCkNCiAgZm9yIChzY29yZSBpbiBzY29yZXMpew0KICAgIGlmIChzY29yZSA+PTkwKSB7DQogICAgICBncmFkZXM8LWMoZ3JhZGVzLCJBKyIpDQogICAgfSBlbHNlIGlmIChzY29yZSA+PTgwKSB7DQogICAgICBncmFkZXM8LWMoZ3JhZGVzLCJBIikNCiAgICB9IGVsc2UgaWYgKHNjb3JlID49NzUpew0KICAgICAgZ3JhZGVzPC1jKGdyYWRlcywiQS0iKQ0KICAgIH0gZWxzZSBpZiAoc2NvcmUgPj03MCkgew0KICAgICAgZ3JhZGVzPC1jKGdyYWRlcywiQisiKQ0KICAgIH0gZWxzZSBpZiAoc2NvcmUgPj02NSkgew0KICAgICAgZ3JhZGVzPC1jKGdyYWRlcywiQiIpDQogICAgfSBlbHNlIGlmIChzY29yZSA+PTYwKXsNCiAgICAgIGdyYWRlczwtYyhncmFkZXMsIkItIikNCiAgICB9IGVsc2UgaWYgKHNjb3JlID49NTUpIHsNCiAgICAgIGdyYWRlczwtYyhncmFkZXMsIkMrIikNCiAgICB9IGVsc2UgaWYgKHNjb3JlID49NTApIHsNCiAgICAgIGdyYWRlczwtYyhncmFkZXMsIkMiKQ0KICAgIH0gZWxzZSBpZiAoc2NvcmUgPj00NSl7DQogICAgICBncmFkZXM8LWMoZ3JhZGVzLCJDLSIpDQogICAgfSBlbHNlIGlmIChzY29yZSA+PTQwKSB7DQogICAgICBncmFkZXM8LWMoZ3JhZGVzLCJEKyIpDQogICAgfSBlbHNlIGlmIChzY29yZSA+PTM1KSB7DQogICAgICBncmFkZXM8LWMoZ3JhZGVzLCJEIikNCiAgICB9IGVsc2Ugew0KICAgICAgZ3JhZGVzPC1jKGdyYWRlcywiRiIpDQogICAgfQ0KICB9DQogIHJldHVybihncmFkZXMpDQp9DQpkZjwtbXV0YXRlKGRmLEdyYWRlPWdyYWRlKHRvdGFsKSkNCmRmDQptZWFuKGRmJHRvdGFsKQ0Kc2QoZGYkdG90YWwpDQpmaWx0ZXIoZGYsdG90YWw9PW1heCh0b3RhbCkpICU+JQ0KICBzZWxlY3QobWF0cmljLG5hbWUpDQpmaWx0ZXIoZGYsdG90YWw9PW1pbih0b3RhbCkpICU+JQ0KICBzZWxlY3QobWF0cmljLG5hbWUpDQpucm93KGZpbHRlcihkZix0b3RhbD49NjUpKQ0KbnJvdyhmaWx0ZXIoZGYsdG90YWw8NjUpKQ0KDQpgYGANCg0KMy4gV3JpdGUgUiBzY3JpcHRzIGZvciBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgdXNpbmcgaXJpcyBkYXRhc2V0Lg0KYS4gQ3JlYXRlIGEgZGF0YSBmcmFtZSBmcm9tIHRoZSBkYXRhc2V0IGFuZCB0aGVuIGRpc3BsYXkgdGhlIGRhdGEgZnJhbWUgaW4gYSANCnNwcmVhZHNoZWV0LXN0eWxlLg0KYi4gU2VsZWN0IHRoZSB2ZXJzaWNvbG9yIHNwZWNpZXMgZnJvbSB0aGUgZGF0YXNldCBhbmQgcmVtb3ZlIHRoZSB1bm5lY2Vzc2FyeSANCmNvbHVtbnMuDQpjLiBTb3J0IHRoZSBkYXRhIGZyYW1lIGJ5IHNlcGFsIGxlbmd0aCBhbmQgd2lkdGguDQpkLiBTb3J0IHRoZSBkYXRhIGZyYW1lIGJ5IHBldGFsIGxlbmd0aCBhbmQgd2lkdGguDQplLiBHZXQgdGhlIHN1bW1hcnkgdmFsdWVzIGZvciBlYWNoIGNvbHVtbnMuIA0KYGBge3J9DQpsaWJyYXJ5KGRhdGFzZXRzKQ0KZGY8LWlyaXMNCmRmDQpzZWxlY3QoZmlsdGVyKGRmLFNwZWNpZXM9PSJ2ZXJzaWNvbG9yIiksU3BlY2llcykNCmFycmFuZ2UoZGYsU2VwYWwuTGVuZ3RoLFNlcGFsLldpZHRoKQ0KYXJyYW5nZShkZixQZXRhbC5MZW5ndGgsUGV0YWwuV2lkdGgpDQpzdW1tYXJpc2UoZGYsc3VtbWFyeShTZXBhbC5MZW5ndGgpLHN1bW1hcnkoU2VwYWwuV2lkdGgpLHN1bW1hcnkoUGV0YWwuTGVuZ3RoKSxzdW1tYXJ5KFBldGFsLldpZHRoKSkNCmBgYA0KDQo0LiBXcml0ZSBSIHNjcmlwdHMgZm9yIGVhY2ggb2YgdGhlIGZvbGxvd2luZyB1c2luZyBUb290aEdyb3d0aCBkYXRhc2V0Lg0KYS4gQ3JlYXRlIGEgZGF0YSBmcmFtZSBmcm9tIHRoZSBkYXRhc2V0IGFuZCB0aGVuIGRpc3BsYXkgdGhlIGRhdGEgZnJhbWUgaW4gYSANCnNwcmVhZHNoZWV0LXN0eWxlLg0KYi4gU3BsaXQgdGhlIGRhdGEgZnJhbWUgaW50byB0d28sIG9uZSB3aXRoIHN1cHBsZW1lbnQgdHlwZSBWQyBhbmQgb25lIHdpdGggT0ouDQpEaXNwbGF5IGJvdGggdGhlIGRhdGEgZnJhbWUgaW4gYSBzcHJlYWRzaGVldC1zdHlsZS4NCmMuIFNlbGVjdCB0aGUgdG9vdGggbGVuZ3RoIGFuZCBkb3NlIGZyb20gdGhlIFZDIGRhdGEgZnJhbWUgYW5kIHRoZW4gc29ydCB0aGUgZGF0YSANCmZyYW1lIGJ5IHRvb3RoIGxlbmd0aC4NCmQuIFNlbGVjdCB0aGUgdG9vdGggbGVuZ3RoIGFuZCBkb3NlIGZyb20gdGhlIE9KIGRhdGEgZnJhbWUgYW5kIHRoZW4gc29ydCB0aGUgZGF0YSANCmZyYW1lIGJ5IHRvb3RoIGxlbmd0aCAoZGVzY2VuZGluZykuDQplLiBHZXQgdGhlIG1pbmltdW0sIG1heGltdW0gYW5kIGF2ZXJhZ2UgdG9vdGggbGVuZ3RoIGJ5IGRvc2UgZm9yIFZDIGFuZCBPSi4gDQpTaG93IHRoZSByZXN1bHRzIGluIGEgc3ByZWFkc2hlZXQtc3R5bGUNCg0KYGBge3J9DQpsaWJyYXJ5KGRhdGFzZXRzKQ0KZGY8LVRvb3RoR3Jvd3RoDQp2YzwtZmlsdGVyKGRmLHN1cHA9PSJWQyIpDQpvajwtZmlsdGVyKGRmLHN1cHA9PSJPSiIpDQp2Yw0Kb2oNCmFycmFuZ2Uoc2VsZWN0KHZjLGxlbixkb3NlKSxsZW4pDQphcnJhbmdlKHNlbGVjdChvaixsZW4sZG9zZSksZGVzYyhsZW4pKQ0Kc3VtbWFyaXNlKHZjLG1pbihsZW4pLG1heChsZW4pLG1lYW4obGVuKSkNCnN1bW1hcmlzZShvaixtaW4obGVuKSxtYXgobGVuKSxtZWFuKGxlbikpDQpgYGA=