Podstawowe operacje w R - część 2.

Operatory i funkcje

Marek Obitz

2022-11-18

Zadanie do wykonania

Zadanie wykonaj w kilku etapach:

  1. Zapisz “dane” jako obiekt tibble pod inną nazwą, np. dane2. Porównaj je.
dane2 <-tibble(dane)
dane2
## # A tibble: 985 × 12
##    street       city    zip state  beds baths sq__ft type  sale_…¹ price latit…²
##    <chr>        <chr> <int> <chr> <int> <int>  <int> <chr> <chr>   <int>   <dbl>
##  1 3526 HIGH ST SACR… 95838 CA        2     1    836 Resi… Wed Ma… 59222    38.6
##  2 51 OMAHA CT  SACR… 95823 CA        3     1   1167 Resi… Wed Ma… 68212    38.5
##  3 2796 BRANCH… SACR… 95815 CA        2     1    796 Resi… Wed Ma… 68880    38.6
##  4 2805 JANETT… SACR… 95815 CA        2     1    852 Resi… Wed Ma… 69307    38.6
##  5 6001 MCMAHO… SACR… 95824 CA        2     1    797 Resi… Wed Ma… 81900    38.5
##  6 5828 PEPPER… SACR… 95841 CA        3     1   1122 Condo Wed Ma… 89921    38.7
##  7 6048 OGDEN … SACR… 95842 CA        3     2   1104 Resi… Wed Ma… 90895    38.7
##  8 2561 19TH A… SACR… 95820 CA        3     1   1177 Resi… Wed Ma… 91002    38.5
##  9 11150 TRINI… RANC… 95670 CA        2     2    941 Condo Wed Ma… 94905    38.6
## 10 7325 10TH ST RIO … 95673 CA        3     2   1146 Resi… Wed Ma… 98937    38.7
## # … with 975 more rows, 1 more variable: longitude <dbl>, and abbreviated
## #   variable names ¹​sale_date, ²​latitude
#dane w postaci tibble są łatwiejsze do odczytania, tabela jest skonstruowana w taki sposób, aby od razu było widać jakie dane zawiera, bez printowania wszystkich rekordów
  1. Które ze zmiennych przekształcone powinny być w czynnik (factor)?
#beds, baths, type.
  1. Cena nieruchomości (price) jest obecnie integer. Czy to odpowiednie?
#Wydaje mi się że tak, nie przeszkadza w przeprowadzaniu operacji.
  1. Napisz własną funkcję, która wykonywać będzie standaryzowanie zmiennych.
standaryzacja <- function(input){

  for(i in 1:ncol(input)) {       # for-loop over columns
    if (is.numeric(input[ , i])){
        input[ , i] <- scale(input[ , i])
    }
  } 
  return(input)
}


output1 = standaryzacja(dane)
  1. Utwórz nową zmienną “cena” w tibble “dane2”, która będzie zestandaryzowaną price, korzystając z własnej funkcji.
#cena <- standaryzacja(dane$price)
dane2$cena <- standaryzacja(dane)$price
print(dane2)
## # A tibble: 985 × 13
##    street       city    zip state  beds baths sq__ft type  sale_…¹ price latit…²
##    <chr>        <chr> <int> <chr> <int> <int>  <int> <chr> <chr>   <int>   <dbl>
##  1 3526 HIGH ST SACR… 95838 CA        2     1    836 Resi… Wed Ma… 59222    38.6
##  2 51 OMAHA CT  SACR… 95823 CA        3     1   1167 Resi… Wed Ma… 68212    38.5
##  3 2796 BRANCH… SACR… 95815 CA        2     1    796 Resi… Wed Ma… 68880    38.6
##  4 2805 JANETT… SACR… 95815 CA        2     1    852 Resi… Wed Ma… 69307    38.6
##  5 6001 MCMAHO… SACR… 95824 CA        2     1    797 Resi… Wed Ma… 81900    38.5
##  6 5828 PEPPER… SACR… 95841 CA        3     1   1122 Condo Wed Ma… 89921    38.7
##  7 6048 OGDEN … SACR… 95842 CA        3     2   1104 Resi… Wed Ma… 90895    38.7
##  8 2561 19TH A… SACR… 95820 CA        3     1   1177 Resi… Wed Ma… 91002    38.5
##  9 11150 TRINI… RANC… 95670 CA        2     2    941 Condo Wed Ma… 94905    38.6
## 10 7325 10TH ST RIO … 95673 CA        3     2   1146 Resi… Wed Ma… 98937    38.7
## # … with 975 more rows, 2 more variables: longitude <dbl>, cena <dbl[,1]>, and
## #   abbreviated variable names ¹​sale_date, ²​latitude
  1. Wykreśl cenę oraz price na wykresach ramkowych obok siebie na jednym ekranie. Różnice?
par(mfcol=c(1,2))
plot(1:nrow(dane2),dane2$price, xlab = "no. of house", ylab = "price") 
plot(1:nrow(dane2),dane2$cena, xlab = "no. of house",ylab = "price stand")

Standaryzacja nie zmieniła kształtu wykresu, gdyż nie zmieniła stosunku między cenami.