Skip to content
Snippets Groups Projects
Commit f284b8e2 authored by elisabetta.ronchiri@gmail.com's avatar elisabetta.ronchiri@gmail.com
Browse files

added lists and data frame exercies

parent 248c91b7
No related branches found
No related tags found
No related merge requests found
---
title: "Data Frame"
author: "ronchieri"
date: "22 febbraio 2017"
output:
pdf_document: default
html_document: default
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, comment ="")
library(pander)
```
## Creare e modificare oggetti data frame
#### 1. Creare un data frame `df1` a partire da tre vettori `v1`, `v2` e `v3` di lunghezza uguale, contenenti rispettivamente la sequenza 1:10, i primi 10 caratteri dell'alfabeto e una sequenza casuale di 10 elmenti
```{r}
v1 <- 1:10
v2 <- letters[1:10]
v3 <- rnorm(10)
df1 <- data.frame(v1, v2, v3,
stringsAsFactors = FALSE)
df1
```
#### 2. Determinare la struttura del data frame `df1`
```{r}
str(df1)
```
#### 3. Selezionare le ultime due colonne del data frame `df1`
Soluzione 1: per posizione
```{r}
df1[,2:3]
```
Soluzione 2: per nome
```{r}
df1[,c("v2", "v3")]
```
#### 4. Estrarre dal data frame `df1`, gli elementi della seconda colonna in corrispondenza dei quali i valori della terza colonna sono positivi elezionare le ultime due colonne del data frame `df1`
Soluzione 1
```{r}
df1[df1$v3>0,2]
```
Soluzione 2
```{r}
df1$v2[df1$v3>0]
```
Soluzione 3
```{r}
df1[df1$v3>0,]$v2
```
#### 5. Creare il vettore `v4` combinando i dati del data frame `df1` separati dal simbolo `_`
```{r}
v4<-paste(df1$v1, df1$v2, df1$v3, sep = "_")
v4
```
## Manipolare gli insiemi di dati disponibili in R
#### 1. Utilizzare il dataset `mtcars`
```{r}
pander(mtcars)
```
#### 1. Recuperare i nomi delle righe del data frame `mtcars`, cambiare l'ordine e assegnarli al vettore `car.nomi`
```{r}
car.nomi <- sample(row.names(mtcars))
car.nomi
```
#### 2. Creare un data frame `mtcars.nuovo` contenente il vettore `car.nomi` e altri due costruiti con valori casuali a partire dalla lunghezza del vettore `car.nomi`
```{r}
r1 <- rnorm(length(car.nomi))
r2 <- rnorm(length(car.nomi))
mtcars.nuovo <- data.frame(car.nomi, r1, r2)
pander(mtcars.nuovo)
```
#### 3. Creare un data frame `mtcars.unione` contenente i due data frame `mtcars` e `mtcars.nuovo`
```{r}
mtcars.unione <- merge(mtcars, mtcars.nuovo,
by.x = "row.names",
by.y = "car.nomi")
mtcars.unione
pander(mtcars.unione)
```
#### 4. Calcolare il valore medio delle colonne `r1` e `r2` in `mtcars.nuovo`. Provare a calcolare il valore medio di `cyl`
```{r}
colMeans(mtcars.nuovo[, c("r1","r2")])
aggregate(mtcars.nuovo$r1, list(mtcars$cyl), FUN = mean)
```
---
title: "List"
author: "ronchieri"
date: "22 febbraio 2017"
output:
pdf_document: default
html_document: default
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, comment ="")
library(pander)
```
## Creare e modificare le liste
#### 1. Creare una lista `l1` contenente un vettore di caratteri `v1`, un vettore numerico `v2` e una matrice di caratteri `M1`
```{r}
l1 <- list(v1 = c("el", "is", "ab", "et", "ta"),
v2 = 1:10,
M1 = matrix(as.character(20:31), nrow = 4))
l1
```
#### 2. Creare un data frame `df1` e aggiungerlo alla lista `l1`
```{r}
df1 <- data.frame(l=letters[1:5], L=LETTERS[1:5],
n=1:5)
l1[[4]] <- df1
l1
```
#### 3. Rimuovere il secondo elemento dalla lista `l1`
```{r}
l1[-2]
```
#### 4. Creare una lista contenente 20 elementi ciascuno contenente un vettore numerico
```{r}
v1<-rnorm(100)
l2<-split(v1,1:20)
l2
```
#### 5. Quanti elementi compongono la lista `l2` e quanti sono gli elementi di ciascun vettore della lista
```{r}
length(l2)
lapply(l2, length)
```
#### 6. Applicare la funzione lapply e sapply alla lista `l2`
```{r}
lapply(l2, length)
sapply(l2, length)
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment