Skip to content

Commit e59f2df

Browse files
committed
differences for PR #149
1 parent da73566 commit e59f2df

3 files changed

Lines changed: 110 additions & 2 deletions

File tree

.Rhistory

Whitespace-only changes.

04-data-structures-part2.md

Lines changed: 109 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@ str(gapminder)
9999
$ gdpPercap: num 779 821 853 836 740 ...
100100
```
101101

102-
We can also examine individual columns of the data frame with our `class` function:
102+
We can also examine individual columns of the data frame with the `class` or
103+
'typeof' functions:
103104

104105

105106
``` r
@@ -110,6 +111,14 @@ class(gapminder$year)
110111
[1] "integer"
111112
```
112113

114+
``` r
115+
typeof(gapminder$year)
116+
```
117+
118+
``` output
119+
[1] "integer"
120+
```
121+
113122
``` r
114123
class(gapminder$country)
115124
```
@@ -400,6 +409,105 @@ tail(gapminder_norway)
400409
```
401410

402411

412+
413+
## Removing columns and rows in data frames
414+
415+
To remove columns from a data frame, we can use the 'subset' function.
416+
This function allows us to remove columns using their names.
417+
If we want to keep all columns except continent, pop and gdpPercap we can use the following `subset` command:
418+
419+
420+
``` r
421+
life_expectancy <- subset(gapminder, select = -c(continent, pop, gdpPercap))
422+
head(life_expectancy)
423+
```
424+
425+
``` output
426+
country year lifeExp below_average
427+
1 Afghanistan 1952 28.801 TRUE
428+
2 Afghanistan 1957 30.332 TRUE
429+
3 Afghanistan 1962 31.997 TRUE
430+
4 Afghanistan 1967 34.020 TRUE
431+
5 Afghanistan 1972 36.088 TRUE
432+
6 Afghanistan 1977 38.438 TRUE
433+
```
434+
435+
We can also use a logical vector to achieve the same result. Make sure the
436+
vector's length match the number of columns in the data frame (to avoid vector
437+
recycling):
438+
439+
440+
``` r
441+
life_expectancy <- gapminder[c(TRUE, TRUE, FALSE, FALSE, TRUE, FALSE)]
442+
head(life_expectancy)
443+
```
444+
445+
``` output
446+
country year lifeExp below_average
447+
1 Afghanistan 1952 28.801 TRUE
448+
2 Afghanistan 1957 30.332 TRUE
449+
3 Afghanistan 1962 31.997 TRUE
450+
4 Afghanistan 1967 34.020 TRUE
451+
5 Afghanistan 1972 36.088 TRUE
452+
6 Afghanistan 1977 38.438 TRUE
453+
```
454+
455+
Alternatively, we can use column positions:
456+
457+
458+
``` r
459+
life_expectancy <- gapminder[-c(3, 4, 6)]
460+
head(life_expectancy)
461+
```
462+
463+
``` output
464+
country year lifeExp below_average
465+
1 Afghanistan 1952 28.801 TRUE
466+
2 Afghanistan 1957 30.332 TRUE
467+
3 Afghanistan 1962 31.997 TRUE
468+
4 Afghanistan 1967 34.020 TRUE
469+
5 Afghanistan 1972 36.088 TRUE
470+
6 Afghanistan 1977 38.438 TRUE
471+
```
472+
473+
Note that the easy way to remove rows from a data frame is selecting the rows
474+
we want to keep instead.
475+
However, to remove rows from a data frame, we can use their positions:
476+
477+
478+
``` r
479+
# Filter data for Afghanistan during the 20th century:
480+
afghanistan_20c <- gapminder[gapminder$country == "Afghanistan" &
481+
gapminder$year > 2000, ]
482+
483+
# Now remove data for 2002, that is, the first row:
484+
afghanistan_20c[-1, ]
485+
```
486+
487+
``` output
488+
country year pop continent lifeExp gdpPercap below_average
489+
12 Afghanistan 2007 31889923 Asia 43.828 974.5803 TRUE
490+
```
491+
492+
493+
In research, you may want to remove all the missing data prior to an analysis. Let's first add some missing values (NAs) into the data and then we can use `na.omit()` to remove them.
494+
495+
496+
``` r
497+
# Turn some values into NAs:
498+
afghanistan_20c <- gapminder[gapminder$country == "Afghanistan", ]
499+
afghanistan_20c[afghanistan_20c$year < 2007, "year"] <- NA
500+
501+
# Remove NAs
502+
na.omit(afghanistan_20c)
503+
```
504+
505+
``` output
506+
country year pop continent lifeExp gdpPercap below_average
507+
12 Afghanistan 2007 31889923 Asia 43.828 974.5803 TRUE
508+
```
509+
510+
403511
## Factors
404512

405513
Here is another thing to look out for: in a `factor`, each different value

md5sum.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"episodes/01-rstudio-intro.Rmd" "f4e11815e378019213cd8bc32bd5d292" "site/built/01-rstudio-intro.md" "2025-11-18"
77
"episodes/02-project-intro.Rmd" "d833fc665b635d29bf03d58bb34524a9" "site/built/02-project-intro.md" "2025-11-18"
88
"episodes/03-data-structures-part1.Rmd" "0165027d9aa46f1f0c499f4c9daa8266" "site/built/03-data-structures-part1.md" "2025-11-18"
9-
"episodes/04-data-structures-part2.Rmd" "1cdde317409584348e41142273f08428" "site/built/04-data-structures-part2.md" "2025-11-18"
9+
"episodes/04-data-structures-part2.Rmd" "730c2b850ab8bd7c311972c6194a2e6a" "site/built/04-data-structures-part2.md" "2025-11-26"
1010
"episodes/05-data-subsetting.Rmd" "b673744f991a865b9996504197cc013e" "site/built/05-data-subsetting.md" "2025-11-18"
1111
"episodes/06-dplyr.Rmd" "df360e575e1df180ef2e9bb3d5255a57" "site/built/06-dplyr.md" "2025-11-18"
1212
"episodes/07-plot-ggplot2.Rmd" "960f92a6bc0a0d859457c530a01841b3" "site/built/07-plot-ggplot2.md" "2025-11-18"

0 commit comments

Comments
 (0)