Table of Contents

Install or Load Libraries

Download the Data

rm(list=ls())
RawDataset =iris #read.table(file = file.choose())
head(RawDataset)
NewData = subset(RawDataset, select = c("Sepal.Length","Sepal.Width","Petal.Length","Petal.Width"))
ProductDataSet = read.csv(file = file.choose(), header = TRUE)
colnames(ProductDataSet)=c("Product","Color","Price")
head(ProductDataSet)

apply() function

Row-Level apply()

RowApply = apply(X=NewData, MARGIN = 1, FUN = mean)
head(RowApply)
    1     2     3     4     5     6 
2.550 2.375 2.350 2.350 2.550 2.850 

Column-Level apply()

ColumnApply = apply(X=NewData, MARGIN = 2, FUN = mean)
ColumnApply
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
    5.843333     3.057333     3.758000     1.199333 

Using Custom Functions

ColumnApply = apply(X=NewData, MARGIN = 2, FUN = function(x) sum(x)/length(x))
ColumnApply
Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
    5.843333     3.057333     3.758000     1.199333 

tapply() function

Running by Specific Attribute Levels

with(iris, tapply(X = Sepal.Length,INDEX = Species,FUN = mean))
    setosa versicolor  virginica 
     5.006      5.936      6.588 

2X2 Tables

with(ProductDataSet, tapply(X=Price, INDEX = list(Product,Color), FUN = mean))
                               Black    Blue     Multi       Red White
AWC Logo Cap                      NA      NA  8.759467        NA    NA
HL Road Frame - Red, 44           NA      NA        NA 1332.1078    NA
HL Road Frame - Red, 48           NA      NA        NA 1332.1078    NA
HL Road Frame - Red, 52           NA      NA        NA 1332.1078    NA
HL Road Frame - Red, 56           NA      NA        NA 1332.1078    NA
HL Road Frame - Red, 62           NA      NA        NA 1332.1078    NA
LL Road Frame - Black, 58   313.8061      NA        NA        NA    NA
LL Road Frame - Black, 60   313.8061      NA        NA        NA    NA
LL Road Frame - Black, 62   313.8061      NA        NA        NA    NA
Long-Sleeve Logo Jersey, L        NA      NA 48.708200        NA    NA
Long-Sleeve Logo Jersey, M        NA      NA 48.708200        NA    NA
Long-Sleeve Logo Jersey, S        NA      NA 48.708200        NA    NA
Long-Sleeve Logo Jersey, XL       NA      NA 48.708200        NA    NA
Mountain Bike Socks, L            NA      NA        NA        NA   9.5
Mountain Bike Socks, M            NA      NA        NA        NA   9.5
Sport-100 Helmet, Black      34.0928      NA        NA        NA    NA
Sport-100 Helmet, Blue            NA 34.0928        NA        NA    NA
Sport-100 Helmet, Red             NA      NA        NA   34.0928    NA

lapply() function

lapply() returns a list of the same length as X, each element of which is the result of applying FUN to the corresponding element of X.

Create a New List

x = list(A = 1:2, Beta = exp(-3:3), Logic = c(TRUE,FALSE,FALSE,TRUE))
data = x$A

Simple Multiplication of Each Elements of A by 10

The output is a list() but the unlist() function will tranform the output into a vector.

new = lapply(X=x$A, FUN = function(x) (x*10))
Report = data.frame(Original = unlist(x$A),Transformed = unlist(new))
Report

sapply() function

Simple Multiplication of Each Elements of A by 10

data = iris$Sepal.Length
new = sapply(X= data, FUN = function(x) (x*10))
Report = data.frame(Original = data, Transformed = new)
head(Report)

Simple Multiplication of Each Elements of A by 10

data = iris$Sepal.Length
Report = quantile(x = data)
Report
  0%  25%  50%  75% 100% 
 4.3  5.1  5.8  6.4  7.9 

Calculate the Quantiles for Each Variable in the iris Dataset

data = iris[,1:4]
Report = sapply(X = data, FUN = quantile)
Report
     Sepal.Length Sepal.Width Petal.Length Petal.Width
0%            4.3         2.0         1.00         0.1
25%           5.1         2.8         1.60         0.3
50%           5.8         3.0         4.35         1.3
75%           6.4         3.3         5.10         1.8
100%          7.9         4.4         6.90         2.5

Calculate a specific Quantile (.75) for Each Variable in the iris Dataset

data = iris[,1:4]
Report = sapply(X = data, FUN = quantile, probs = 0.75)
Report
Sepal.Length.75%  Sepal.Width.75% Petal.Length.75%  Petal.Width.75% 
             6.4              3.3              5.1              1.8 

aggregate() function

Using aggregate() with vectors

data = subset(iris,select=c("Sepal.Length","Species"))
Report = as.data.frame(with(data, aggregate(Sepal.Length, by=list(Species), FUN="mean")))
colnames(Report) = c("Species","Mean")
Report

Using aggregate() through formula objects

data = ProductDataSet
Report = with(ProductDataSet, aggregate(Price~Product+Color, data = iris, FUN ="mean"))
colnames(Report) = c("Product","Color","Average Price")
head(Report)

Compute the mean of all variables by factors

Data = iris
Report = with(Data,aggregate(. ~Species, data = iris, FUN ="mean"))
Report

sweep() function

data = matrix(0,ncol =6, nrow = 6)
data
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    0    0    0    0    0    0
[2,]    0    0    0    0    0    0
[3,]    0    0    0    0    0    0
[4,]    0    0    0    0    0    0
[5,]    0    0    0    0    0    0
[6,]    0    0    0    0    0    0
Report = sweep(x=data, MARGIN = 1, STATS = 1, FUN = "+")
Report
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    1    1    1    1    1
[2,]    1    1    1    1    1    1
[3,]    1    1    1    1    1    1
[4,]    1    1    1    1    1    1
[5,]    1    1    1    1    1    1
[6,]    1    1    1    1    1    1
LS0tDQp0aXRsZTogIkRhdGEgTWFuaXB1bGF0aW9uIC0gQXBwbHkgRnVuY3Rpb25zIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KIyMjICoqVGFibGUgb2YgQ29udGVudHMqKg0KDQoqIEluc3RhbGwgb3IgTG9hZCBMaWJyYXJpZXMNCiogRG93bmxvYWQgdGhlIERhdGENCiogYXBwbHkoKSBGdW5jdGlvbnMNCg0KICAtIFJvdyBMZXZlbCBhcHBseSgpDQogIC0gQ29sdW1uIExldmVsIGFwcGx5KCkNCiAgLSBVc2luZyBDdXN0b20gRnVuY3Rpb25zDQogIA0KKiB0YXBwbHkoKSBGdW5jdGlvbnMNCg0KICAtIFJ1bm5pbmcgYnkgU3BlY2lmaWMgQXR0cmlidXRlIExldmVscw0KICAtIDJYMiBUYWJsZXMNCiAgDQoqIGxhcHBseSgpDQoNCiAgLSBDcmVhdGUgYSBOZXcgTGlzdA0KICANCiogc2FwcGx5KCkNCg0KICAtIFNpbXBsZSBNdWx0aXBsaWNhdGlvbiBvZiBFYWNoIEVsZW1lbnRzIG9mIEEgYnkgMTANCiAgLSBDYWxjdWxhdGUgdGhlIFF1YW50aWxlcyBmb3IgRWFjaCBWYXJpYWJsZSBpbiB0aGUgaXJpcyBEYXRhc2V0DQogIA0KKiBhZ2dyZWdhdGUoKQ0KDQogIC0gQ29tcHV0ZSB0aGUgbWVhbiBvZiBhbGwgdmFyaWFibGVzIGJ5IGZhY3RvcnMNCiAgDQoqIHN3ZWVwKCkNCg0KICAtIA0KDQoNCiMjIyAqKkluc3RhbGwgb3IgTG9hZCBMaWJyYXJpZXMqKg0KYGBge3J9DQoNCmBgYA0KDQojIyMgKipEb3dubG9hZCB0aGUgRGF0YSoqDQpgYGB7cn0NCnJtKGxpc3Q9bHMoKSkNClJhd0RhdGFzZXQgPWlyaXMgI3JlYWQudGFibGUoZmlsZSA9IGZpbGUuY2hvb3NlKCkpDQpoZWFkKFJhd0RhdGFzZXQpDQpOZXdEYXRhID0gc3Vic2V0KFJhd0RhdGFzZXQsIHNlbGVjdCA9IGMoIlNlcGFsLkxlbmd0aCIsIlNlcGFsLldpZHRoIiwiUGV0YWwuTGVuZ3RoIiwiUGV0YWwuV2lkdGgiKSkNCmBgYA0KDQpgYGB7cn0NClByb2R1Y3REYXRhU2V0ID0gcmVhZC5jc3YoZmlsZSA9IGZpbGUuY2hvb3NlKCksIGhlYWRlciA9IFRSVUUpDQpjb2xuYW1lcyhQcm9kdWN0RGF0YVNldCk9YygiUHJvZHVjdCIsIkNvbG9yIiwiUHJpY2UiKQ0KaGVhZChQcm9kdWN0RGF0YVNldCkNCmBgYA0KDQojIyMgKiphcHBseSgpIGZ1bmN0aW9uKioNCg0KKipSb3ctTGV2ZWwgYXBwbHkoKSoqDQoNCmBgYHtyfQ0KUm93QXBwbHkgPSBhcHBseShYPU5ld0RhdGEsIE1BUkdJTiA9IDEsIEZVTiA9IG1lYW4pDQpoZWFkKFJvd0FwcGx5KQ0KYGBgDQoNCioqQ29sdW1uLUxldmVsIGFwcGx5KCkqKg0KDQpgYGB7cn0NCkNvbHVtbkFwcGx5ID0gYXBwbHkoWD1OZXdEYXRhLCBNQVJHSU4gPSAyLCBGVU4gPSBtZWFuKQ0KQ29sdW1uQXBwbHkNCmBgYA0KDQoqKlVzaW5nIEN1c3RvbSBGdW5jdGlvbnMqKg0KYGBge3J9DQpDb2x1bW5BcHBseSA9IGFwcGx5KFg9TmV3RGF0YSwgTUFSR0lOID0gMiwgRlVOID0gZnVuY3Rpb24oeCkgc3VtKHgpL2xlbmd0aCh4KSkNCkNvbHVtbkFwcGx5DQpgYGANCg0KDQojIyMgKip0YXBwbHkoKSBmdW5jdGlvbioqDQoNCioqUnVubmluZyBieSBTcGVjaWZpYyBBdHRyaWJ1dGUgTGV2ZWxzKioNCg0KYGBge3J9DQp3aXRoKGlyaXMsIHRhcHBseShYID0gU2VwYWwuTGVuZ3RoLElOREVYID0gU3BlY2llcyxGVU4gPSBtZWFuKSkNCmBgYA0KDQoqKjJYMiBUYWJsZXMqKg0KYGBge3J9DQp3aXRoKFByb2R1Y3REYXRhU2V0LCB0YXBwbHkoWD1QcmljZSwgSU5ERVggPSBsaXN0KFByb2R1Y3QsQ29sb3IpLCBGVU4gPSBtZWFuKSkNCmBgYA0KDQojIyMgKipsYXBwbHkoKSBmdW5jdGlvbioqDQoNCmxhcHBseSgpIHJldHVybnMgYSBsaXN0IG9mIHRoZSBzYW1lIGxlbmd0aCBhcyBYLCBlYWNoIGVsZW1lbnQgb2Ygd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBGVU4gdG8gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBvZiBYLg0KDQoqKkNyZWF0ZSBhIE5ldyBMaXN0KioNCg0KYGBge3J9DQp4ID0gbGlzdChBID0gMToyLCBCZXRhID0gZXhwKC0zOjMpLCBMb2dpYyA9IGMoVFJVRSxGQUxTRSxGQUxTRSxUUlVFKSkNCmRhdGEgPSB4JEENCmBgYA0KDQoqKlNpbXBsZSBNdWx0aXBsaWNhdGlvbiBvZiBFYWNoIEVsZW1lbnRzIG9mIEEgYnkgMTAqKg0KDQpUaGUgb3V0cHV0IGlzIGEgbGlzdCgpIGJ1dCB0aGUgdW5saXN0KCkgZnVuY3Rpb24gd2lsbCB0cmFuZm9ybSB0aGUgb3V0cHV0IGludG8gYSB2ZWN0b3IuDQoNCmBgYHtyfQ0KbmV3ID0gbGFwcGx5KFg9eCRBLCBGVU4gPSBmdW5jdGlvbih4KSAoeCoxMCkpDQpSZXBvcnQgPSBkYXRhLmZyYW1lKE9yaWdpbmFsID0gdW5saXN0KHgkQSksVHJhbnNmb3JtZWQgPSB1bmxpc3QobmV3KSkNClJlcG9ydA0KYGBgDQoNCiMjIyAqKnNhcHBseSgpIGZ1bmN0aW9uKioNCg0KKipTaW1wbGUgTXVsdGlwbGljYXRpb24gb2YgRWFjaCBFbGVtZW50cyBvZiBBIGJ5IDEwKioNCg0KYGBge3J9DQpkYXRhID0gaXJpcyRTZXBhbC5MZW5ndGgNCm5ldyA9IHNhcHBseShYPSBkYXRhLCBGVU4gPSBmdW5jdGlvbih4KSAoeCoxMCkpDQpSZXBvcnQgPSBkYXRhLmZyYW1lKE9yaWdpbmFsID0gZGF0YSwgVHJhbnNmb3JtZWQgPSBuZXcpDQpoZWFkKFJlcG9ydCkNCmBgYA0KDQoqKlNpbXBsZSBNdWx0aXBsaWNhdGlvbiBvZiBFYWNoIEVsZW1lbnRzIG9mIEEgYnkgMTAqKg0KDQpgYGB7cn0NCmRhdGEgPSBpcmlzJFNlcGFsLkxlbmd0aA0KUmVwb3J0ID0gcXVhbnRpbGUoeCA9IGRhdGEpDQpSZXBvcnQNCmBgYA0KDQoqKkNhbGN1bGF0ZSB0aGUgUXVhbnRpbGVzIGZvciBFYWNoIFZhcmlhYmxlIGluIHRoZSBpcmlzIERhdGFzZXQqKg0KDQpgYGB7cn0NCmRhdGEgPSBpcmlzWywxOjRdDQpSZXBvcnQgPSBzYXBwbHkoWCA9IGRhdGEsIEZVTiA9IHF1YW50aWxlKQ0KUmVwb3J0DQpgYGANCg0KKipDYWxjdWxhdGUgYSBzcGVjaWZpYyBRdWFudGlsZSAoLjc1KSBmb3IgRWFjaCBWYXJpYWJsZSBpbiB0aGUgaXJpcyBEYXRhc2V0KioNCg0KYGBge3J9DQpkYXRhID0gaXJpc1ssMTo0XQ0KUmVwb3J0ID0gc2FwcGx5KFggPSBkYXRhLCBGVU4gPSBxdWFudGlsZSwgcHJvYnMgPSAwLjc1KQ0KUmVwb3J0DQpgYGANCg0KIyMjICoqYWdncmVnYXRlKCkgZnVuY3Rpb24qKg0KDQoqKipVc2luZyBhZ2dyZWdhdGUoKSB3aXRoIHZlY3RvcnMqKioNCmBgYHtyfQ0KZGF0YSA9IHN1YnNldChpcmlzLHNlbGVjdD1jKCJTZXBhbC5MZW5ndGgiLCJTcGVjaWVzIikpDQpSZXBvcnQgPSBhcy5kYXRhLmZyYW1lKHdpdGgoZGF0YSwgYWdncmVnYXRlKFNlcGFsLkxlbmd0aCwgYnk9bGlzdChTcGVjaWVzKSwgRlVOPSJtZWFuIikpKQ0KY29sbmFtZXMoUmVwb3J0KSA9IGMoIlNwZWNpZXMiLCJNZWFuIikNClJlcG9ydA0KYGBgDQoNCg0KDQoqKipVc2luZyBhZ2dyZWdhdGUoKSB0aHJvdWdoIGZvcm11bGEgb2JqZWN0cyoqKg0KYGBge3J9DQpkYXRhID0gUHJvZHVjdERhdGFTZXQNClJlcG9ydCA9IHdpdGgoUHJvZHVjdERhdGFTZXQsIGFnZ3JlZ2F0ZShQcmljZX5Qcm9kdWN0K0NvbG9yLCBkYXRhID0gaXJpcywgRlVOID0ibWVhbiIpKQ0KY29sbmFtZXMoUmVwb3J0KSA9IGMoIlByb2R1Y3QiLCJDb2xvciIsIkF2ZXJhZ2UgUHJpY2UiKQ0KaGVhZChSZXBvcnQpDQpgYGANCg0KKioqQ29tcHV0ZSB0aGUgbWVhbiBvZiBhbGwgdmFyaWFibGVzIGJ5IGZhY3RvcnMqKioNCg0KYGBge3J9DQpEYXRhID0gaXJpcw0KUmVwb3J0ID0gd2l0aChEYXRhLGFnZ3JlZ2F0ZSguIH5TcGVjaWVzLCBkYXRhID0gaXJpcywgRlVOID0ibWVhbiIpKQ0KUmVwb3J0DQpgYGANCg0KIyMjICoqc3dlZXAoKSBmdW5jdGlvbioqDQpgYGB7cn0NCmRhdGEgPSBtYXRyaXgoMCxuY29sID02LCBucm93ID0gNikNCmRhdGENClJlcG9ydCA9IHN3ZWVwKHg9ZGF0YSwgTUFSR0lOID0gMSwgU1RBVFMgPSAxLCBGVU4gPSAiKyIpDQpSZXBvcnQNCmBgYA0KDQoNCg==