@@ -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
114123class(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
405513Here is another thing to look out for: in a ` factor ` , each different value
0 commit comments