Showing posts with label {base}. Show all posts
Showing posts with label {base}. Show all posts

Tuesday, October 24, 2017

unique() {base}


unique() function is a generic function that extracts unique values from a vector, array or data frame.

The parameters of the function are:
-x: vector, array or data frame to remove duplicated values
-fromLast: logical indicating if duplication should be considered from the last

#`unique()` function using vectors:
x = c(10 + 0:5, 1:5, 8:1)
x
##  [1] 10 11 12 13 14 15  1  2  3  4  5  8  7  6  5  4  3  2  1
u1 = unique(x)
u1
##  [1] 10 11 12 13 14 15  1  2  3  4  5  8  7  6
u2 = unique(x,  fromLast = TRUE) # different order
u2
##  [1] 10 11 12 13 14 15  8  7  6  5  4  3  2  1
y = c(5:1,8:1, 10, 1:3)
y
##  [1]  5  4  3  2  1  8  7  6  5  4  3  2  1 10  1  2  3
u3 = unique(y)
u3
## [1]  5  4  3  2  1  8  7  6 10
u4 = unique(y,  fromLast = TRUE) # different order
u4
## [1]  8  7  6  5  4 10  1  2  3
#`unique()` function with data frames:
dim(iris)
## [1] 150   5
nrow(unique(iris))
## [1] 149
unique(iris$Sepal.Width)
##  [1] 3.5 3.0 3.2 3.1 3.6 3.9 3.4 2.9 3.7 4.0 4.4 3.8 3.3 4.1 4.2 2.3 2.8
## [18] 2.4 2.7 2.0 2.2 2.5 2.6
length(unique(iris$Sepal.Width))
## [1] 23
par(mfrow = c(1,2))
plot(iris$Sepal.Length, col = 'darkturquoise',type = 'b', frame.plot = F)
plot(unique(iris$Sepal.Length), col = 'darkviolet',type='b', frame.plot = F)

Saturday, October 14, 2017

var() {base}


var() function that computes the variation of the values in x.

var(x, y = NULL, na.rm = FALSE)

The arguments are:
  • x: numeric vector
  • y:NULL (default) or a vector, matrix or data frame with compatible dimensions to x.
  • na.rm: logical value indicating whether NA values should be removed before the computation proceeds.

Formula to calculate the Standard Deviation:
σ=(xix¯)2n1

The variance of a data set measures the mathematical dispersion of the data relative to the mean. However, this value is difficult to apply in a real-world sense because the values used to calculate it were squared.
The standard deviation, as the square root of the variance gives a value that is in the same units as the original values, which makes it much easier to work with and to interpret. (https://rfunctionaday.blogspot.com.es/2017/10/sd-base.html)

x:
x = c(1,6,10,23,4,5,56)
var1 = sum((x - mean(x))^2)/(length(x)-1)
var2 = var(x)
var1 ; var2 #same result
## [1] 378
## [1] 378
y:
var(1:10); var(1:10,1:10) #same result
## [1] 9.166667
## [1] 9.166667
y = c(10,45,10,3,24,54,5)
var1 = var(x); var3 = var(y)
var4 = var(x,y)
var1 ; var3 ; var4
## [1] 378
## [1] 415.619
## [1] -195
na.rm:
z = c(1,6,10,23,NA, NA, 4,5,56, 56, NA)
var3 = sum((z - mean(z))^2)/(length(z)-1)
var4 = var(z)
var5 = var(z, na.rm = TRUE) #remove NA values to compute var
var3 ; var4 ; var5
## [1] NA
## [1] NA
## [1] 534.125
summary(iris)
##   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##        Species  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 
meanset = mean(iris$Sepal.Length[iris$Species=='setosa'])
meanversi = mean(iris$Sepal.Length[iris$Species=='versicolor'])
meanvir = mean(iris$Sepal.Length[iris$Species=='virginica'])

sdset = sd(iris$Sepal.Length[iris$Species=='setosa'])
sdversi = sd(iris$Sepal.Length[iris$Species=='versicolor'])
sdvir = sd(iris$Sepal.Length[iris$Species=='virginica'])

varset = var(iris$Sepal.Length[iris$Species=='setosa'])
varversi = var(iris$Sepal.Length[iris$Species=='versicolor'])
varvir = var(iris$Sepal.Length[iris$Species=='virginica'])
plot(iris$Species, iris$Sepal.Length, col = 'thistle1', main = 'SD/Var')
#SD segments
segments(1, meanset+sdset,1, meanset-sdset, col = 'deeppink', lwd = 5)
segments(2, meanversi+ sdversi, 2, meanversi-sdversi, col = 'deeppink', lwd = 5)
segments(3, meanvir + sdvir, 3, meanvir-sdvir, col = 'deeppink',lwd = 5)
#var segments
segments(1, meanset+varset,1, meanset-varset, col = 'darkviolet', lwd = 5)
segments(2, meanversi+ varversi, 2, meanversi-varversi, col = 'darkviolet', lwd = 5)
segments(3, meanvir + varvir, 3, meanvir-varvir, col = 'darkviolet',lwd = 5)

Friday, October 6, 2017

mean() {base}


mean() function that computes the arithmetic mean.

mean(x, trim = 0, na.rm = FALSE, ...)

The arguments are:
  • x: numeric vector
  • trim: fraction of observations (0 to 0.5) to be trimmed from each end of x before the mean is computed.
  • na.rm: logical value indicating whether NA values should be removed before the computation proceeds.

x = 1:10; x
##  [1]  1  2  3  4  5  6  7  8  9 10
mean(x)  #sum(x)/length(x)
## [1] 5.5

trim
It trims a fraction (0 to 0.5) of observations from each end of x before the mean is computed.
y = c(7,8,9,3,4,55,3,4,5,6,2,23,4,5,3,65,5,78,9,9)
mean(y)
## [1] 15.35
sort(y)
##  [1]  2  3  3  3  4  4  4  5  5  5  6  7  8  9  9  9 23 55 65 78
mean(y, trim = 0.1) ; e = sort(y)[-c(1,2,19,20)] ; sum(e)/length(e)
## [1] 9.9375
## [1] 9.9375
mean(y, trim = 0.3) ; f = sort(y)[-c(1:6,15:20)] ; sum(f)/length(f)
## [1] 6.125
## [1] 6.125
# if trim >= to 0.5 it returns the median
mean(y, trim = 0.5) ; d = sort(y)[-c(1:10,10:20)] ; sum(d)/length(d) 
## [1] 5.5
## [1] NaN
mean(y, trim = 0.9)
## [1] 5.5

na.rm:
 na.rm = TRUE removes NA values before computing the mean.
z = c(1,2,3,4,5,NA,NA,23,34,67)
mean(z)
## [1] NA
mean(z, na.rm = TRUE)
## [1] 17.375
plot(sort(y), main = 'mean() function')
abline(v = mean(y), col = 'deeppink')
abline(v = mean(y, trim = 0.1), col = 'orange')
abline(v = mean(y, trim = 0.6), col = 'darkmagenta') #median
text(16.5, 60, "mean(y)", col = 'deeppink') 
text(11.2, 60, "mean(y,\n trim = 0.1)", col = 'orange') 
text(6.9, 60, "mean(y,\n trim = 0.6) \n (median)", col = 'darkmagenta') 

duplicated() {base}

duplicated()  function determines which elements are duplicated and returns a logical vector. The parameters of the function are:   ...