#### 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)