- Write R scripts for each of the following
- 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}
- Return a subset of rows, where read more than or equal to 55 and
order the rows by read column.
- Return the id (descending) in vector, where write more than or equal
to 50.
- Return a subset of rows, where duplicate value in read.
- Create a new column RW that measure the different between read and
write.
- 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
- Write R scripts for each of the following
- 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}
- Return the name in vector, where matric begin with S1.
- Create a new column CA after the asgn column that add the value of
test and asgn.
- Create a new column SA after the final column that add the value of
post and final.
- Create a new column Total that add the value SA and CA.
- 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
- Calculate the mean and standard deviation of the subject.
- Get the matric and name of student with highest score and lowest
score.
- 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
- Write R scripts for each of the following using iris dataset.
- Create a data frame from the dataset and then display the data frame
in a spreadsheet-style.
- Select the versicolor species from the dataset and remove the
unnecessary columns.
- Sort the data frame by sepal length and width.
- Sort the data frame by petal length and width.
- 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.
- Write R scripts for each of the following using ToothGrowth
dataset.
- Create a data frame from the dataset and then display the data frame
in a spreadsheet-style.
- Split the data frame into two, one with supplement type VC and one
with OJ. Display both the data frame in a spreadsheet-style.
- Select the tooth length and dose from the VC data frame and then
sort the data frame by tooth length.
- Select the tooth length and dose from the OJ data frame and then
sort the data frame by tooth length (descending).
- 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=