{"id":7233,"date":"2018-10-01T21:10:41","date_gmt":"2018-10-01T21:10:41","guid":{"rendered":"https:\/\/www.datanovia.com\/en\/?post_type=dt_lessons&#038;p=7233"},"modified":"2018-10-19T07:19:37","modified_gmt":"2018-10-19T05:19:37","slug":"subset-data-frame-rows-in-r","status":"publish","type":"dt_lessons","link":"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/","title":{"rendered":"Subset Data Frame Rows in R"},"content":{"rendered":"<div id=\"rdoc\">\n<p>This tutorial describes how to <strong>subset<\/strong> or extract data frame rows based on certain criteria.<\/p>\n<p>In this tutorial, you will learn the following R functions from the <strong>dplyr<\/strong> package:<\/p>\n<ul>\n<li><strong>slice<\/strong>(): Extract rows by position<\/li>\n<li><strong>filter<\/strong>(): Extract rows that meet a certain logical criteria. For example <code>iris %&gt;% filter(Sepal.Length &gt; 6)<\/code>.<\/li>\n<li><strong>filter_all<\/strong>(), <strong>filter_if<\/strong>() and <strong>filter_at<\/strong>(): filter rows within a selection of variables. These functions replicate the logical criteria over all variables or a selection of variables.<\/li>\n<li><strong>sample_n<\/strong>(): Randomly select n rows<\/li>\n<li><strong>sample_frac<\/strong>(): Randomly select a fraction of rows<\/li>\n<li><strong>top_n<\/strong>(): Select top n rows ordered by a variable<\/li>\n<\/ul>\n<p>We will also show you how to remove rows with missing values in a given column.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/data-manipulation-in-r\/images\/subset-data-frame-rows-in-r.png\" alt=\"Subsetting Data Frame Rows in R\" \/><\/p>\n<p>Contents:<\/p>\n<div id=\"TOC\">\n<ul>\n<li><a href=\"#required-packages\">Required packages<\/a><\/li>\n<li><a href=\"#demo-dataset\">Demo dataset<\/a><\/li>\n<li><a href=\"#extract-rows-by-position\">Extract rows by position<\/a><\/li>\n<li><a href=\"#filter-rows-by-logical-criteria\">Filter rows by logical criteria<\/a>\n<ul>\n<li><a href=\"#logical-comparisons\">Logical comparisons<\/a><\/li>\n<li><a href=\"#extract-rows-based-on-logical-criteria\">Extract rows based on logical criteria<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#filter-rows-within-a-selection-of-variables\">Filter rows within a selection of variables<\/a><\/li>\n<li><a href=\"#remove-missing-values\">Remove missing values<\/a><\/li>\n<li><a href=\"#select-random-rows-from-a-data-frame\">Select random rows from a data frame<\/a><\/li>\n<li><a href=\"#select-top-n-rows-ordered-by-a-variable\">Select top n rows ordered by a variable<\/a><\/li>\n<li><a href=\"#summary\">Summary<\/a><\/li>\n<\/ul>\n<\/div>\n<div id=\"required-packages\" class=\"section level2\">\n<h2>Required packages<\/h2>\n<p>Load the <code>tidyverse<\/code> packages, which include <code>dplyr<\/code>:<\/p>\n<pre class=\"r\"><code>library(tidyverse)<\/code><\/pre>\n<\/div>\n<div id=\"demo-dataset\" class=\"section level2\">\n<h2>Demo dataset<\/h2>\n<p>We\u2019ll use the R built-in iris data set, which we start by converting into a tibble data frame (tbl_df) for easier data analysis.<\/p>\n<pre class=\"r\"><code>my_data &lt;- as_tibble(iris)\r\nmy_data<\/code><\/pre>\n<pre><code>## # A tibble: 150 x 5\r\n##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species\r\n##          &lt;dbl&gt;       &lt;dbl&gt;        &lt;dbl&gt;       &lt;dbl&gt; &lt;fct&gt;  \r\n## 1          5.1         3.5          1.4         0.2 setosa \r\n## 2          4.9         3            1.4         0.2 setosa \r\n## 3          4.7         3.2          1.3         0.2 setosa \r\n## 4          4.6         3.1          1.5         0.2 setosa \r\n## 5          5           3.6          1.4         0.2 setosa \r\n## 6          5.4         3.9          1.7         0.4 setosa \r\n## # ... with 144 more rows<\/code><\/pre>\n<\/div>\n<div id=\"extract-rows-by-position\" class=\"section level2\">\n<h2>Extract rows by position<\/h2>\n<ul>\n<li>Key R function: <code>slice()<\/code> [dplyr package]<\/li>\n<\/ul>\n<pre class=\"r\"><code>my_data %&gt;% slice(1:6)<\/code><\/pre>\n<\/div>\n<div id=\"filter-rows-by-logical-criteria\" class=\"section level2\">\n<h2>Filter rows by logical criteria<\/h2>\n<ul>\n<li>Key R function: <code>filter()<\/code> [dplyr package]. Used to filter rows that meet some logical criteria.<\/li>\n<\/ul>\n<p>Before continuing, we introduce logical comparisons and operators, which are important to know for filtering data.<\/p>\n<div id=\"logical-comparisons\" class=\"section level3\">\n<h3>Logical comparisons<\/h3>\n<p>The \u201clogical\u201d comparison operators available in R are:<\/p>\n<div class=\"block\">\n<ol style=\"list-style-type: decimal;\">\n<li><strong>Logical comparisons<\/strong>\n<ul>\n<li><strong>&lt;<\/strong>: for less than<\/li>\n<li><strong>&gt;<\/strong>: for greater than<\/li>\n<li><strong>&lt;=<\/strong>: for less than or equal to<\/li>\n<li><strong>&gt;=<\/strong>: for greater than or equal to<\/li>\n<li><strong>==<\/strong>: for equal to each other<\/li>\n<li><strong>!=<\/strong>: not equal to each other<\/li>\n<li><strong>%in%<\/strong>: group membership. For example, \u201cvalue <strong>%in%<\/strong> c(2, 3)\u201d means that value can takes 2 or 3.<\/li>\n<li><strong>is.na<\/strong>(): is NA<\/li>\n<li><strong>!is.na<\/strong>(): is not NA.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Logical operators<\/strong>\n<ul>\n<li>value == 2<strong>|<\/strong>3: means that the value equal 2 or (|) 3. value <strong>%in%<\/strong> c(2, 3) is a shortcut equivalent to value == 2<strong>|<\/strong>3.<\/li>\n<li><strong>&amp;<\/strong>: means and. For example sex == \u201cfemale\u201d &amp; age &gt; 25<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/div>\n<div class=\"error\">\n<p>The most frequent mistake made by beginners in R is to use = instead of == when testing for equality. Remember that, when you are testing for equality, you should always use == (not =).<\/p>\n<\/div>\n<\/div>\n<div id=\"extract-rows-based-on-logical-criteria\" class=\"section level3\">\n<h3>Extract rows based on logical criteria<\/h3>\n<ul>\n<li><strong>One-column based criteria<\/strong>: Extract rows where Sepal.Length &gt; 7:<\/li>\n<\/ul>\n<pre class=\"r\"><code>my_data %&gt;% filter(Sepal.Length &gt; 7)<\/code><\/pre>\n<pre><code>## # A tibble: 12 x 5\r\n##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species  \r\n##          &lt;dbl&gt;       &lt;dbl&gt;        &lt;dbl&gt;       &lt;dbl&gt; &lt;fct&gt;    \r\n## 1          7.1         3            5.9         2.1 virginica\r\n## 2          7.6         3            6.6         2.1 virginica\r\n## 3          7.3         2.9          6.3         1.8 virginica\r\n## 4          7.2         3.6          6.1         2.5 virginica\r\n## 5          7.7         3.8          6.7         2.2 virginica\r\n## 6          7.7         2.6          6.9         2.3 virginica\r\n## # ... with 6 more rows<\/code><\/pre>\n<ul>\n<li><strong>Multiple-column based criteria<\/strong>: Extract rows where Sepal.Length &gt; 6.7 and Sepal.Width \u2264 3:<\/li>\n<\/ul>\n<pre class=\"r\"><code>my_data %&gt;% filter(Sepal.Length &gt; 6.7, Sepal.Width &lt;= 3)<\/code><\/pre>\n<pre><code>## # A tibble: 10 x 5\r\n##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species   \r\n##          &lt;dbl&gt;       &lt;dbl&gt;        &lt;dbl&gt;       &lt;dbl&gt; &lt;fct&gt;     \r\n## 1          6.8         2.8          4.8         1.4 versicolor\r\n## 2          7.1         3            5.9         2.1 virginica \r\n## 3          7.6         3            6.6         2.1 virginica \r\n## 4          7.3         2.9          6.3         1.8 virginica \r\n## 5          6.8         3            5.5         2.1 virginica \r\n## 6          7.7         2.6          6.9         2.3 virginica \r\n## # ... with 4 more rows<\/code><\/pre>\n<ul>\n<li><strong>Test for equality<\/strong> (==): Extract rows where Sepal.Length &gt; 6.5 and Species = \u201cversicolor\u201d:<\/li>\n<\/ul>\n<pre class=\"r\"><code>my_data %&gt;% filter(Sepal.Length &gt; 6.7, Species == \"versicolor\")<\/code><\/pre>\n<pre><code>## # A tibble: 3 x 5\r\n##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species   \r\n##          &lt;dbl&gt;       &lt;dbl&gt;        &lt;dbl&gt;       &lt;dbl&gt; &lt;fct&gt;     \r\n## 1          7           3.2          4.7         1.4 versicolor\r\n## 2          6.9         3.1          4.9         1.5 versicolor\r\n## 3          6.8         2.8          4.8         1.4 versicolor<\/code><\/pre>\n<ul>\n<li><strong>Using OR operator<\/strong> (|): Extract rows where Sepal.Length &gt; 6.5 and (Species = \u201cversicolor\u201d or Species = \u201cvirginica\u201d):<\/li>\n<\/ul>\n<p>Use this:<\/p>\n<pre class=\"r\"><code>my_data %&gt;% filter(\r\n  Sepal.Length &gt; 6.7, \r\n  Species == \"versicolor\" | Species == \"virginica\"\r\n  )<\/code><\/pre>\n<pre><code>## # A tibble: 20 x 5\r\n##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species   \r\n##          &lt;dbl&gt;       &lt;dbl&gt;        &lt;dbl&gt;       &lt;dbl&gt; &lt;fct&gt;     \r\n## 1          7           3.2          4.7         1.4 versicolor\r\n## 2          6.9         3.1          4.9         1.5 versicolor\r\n## 3          6.8         2.8          4.8         1.4 versicolor\r\n## 4          7.1         3            5.9         2.1 virginica \r\n## 5          7.6         3            6.6         2.1 virginica \r\n## 6          7.3         2.9          6.3         1.8 virginica \r\n## # ... with 14 more rows<\/code><\/pre>\n<p>Or, equivalently, use this shortcut (<strong>%in%<\/strong> operator):<\/p>\n<pre class=\"r\"><code>my_data %&gt;% filter(\r\n  Sepal.Length &gt; 6.7, \r\n  Species %in% c(\"versicolor\", \"virginica\" )\r\n  )<\/code><\/pre>\n<\/div>\n<\/div>\n<div id=\"filter-rows-within-a-selection-of-variables\" class=\"section level2\">\n<h2>Filter rows within a selection of variables<\/h2>\n<p>This section presents 3 functions - <strong>filter_all<\/strong>(), <strong>filter_if<\/strong>() and <strong>filter_at<\/strong>() - to filter rows within a selection of variables.<\/p>\n<p>These functions replicate the logical criteria over all variables or a selection of variables.<\/p>\n<p>Create a new demo data set from <code>my_data<\/code> by removing the grouping column \u201cSpecies\u201d:<\/p>\n<pre class=\"r\"><code>my_data2 &lt;- my_data %&gt;% select(-Species)<\/code><\/pre>\n<ul>\n<li>Select rows where all variables are greater than 2.4:<\/li>\n<\/ul>\n<pre class=\"r\"><code>my_data2 %&gt;% filter_all(all_vars(.&gt; 2.4))<\/code><\/pre>\n<pre><code>## # A tibble: 3 x 4\r\n##   Sepal.Length Sepal.Width Petal.Length Petal.Width\r\n##          &lt;dbl&gt;       &lt;dbl&gt;        &lt;dbl&gt;       &lt;dbl&gt;\r\n## 1          6.3         3.3          6           2.5\r\n## 2          7.2         3.6          6.1         2.5\r\n## 3          6.7         3.3          5.7         2.5<\/code><\/pre>\n<ul>\n<li>Select rows when any of the variables are greater than 2.4:<\/li>\n<\/ul>\n<pre class=\"r\"><code>my_data2 %&gt;% filter_all(any_vars(.&gt; 2.4))<\/code><\/pre>\n<pre><code>## # A tibble: 150 x 4\r\n##   Sepal.Length Sepal.Width Petal.Length Petal.Width\r\n##          &lt;dbl&gt;       &lt;dbl&gt;        &lt;dbl&gt;       &lt;dbl&gt;\r\n## 1          5.1         3.5          1.4         0.2\r\n## 2          4.9         3            1.4         0.2\r\n## 3          4.7         3.2          1.3         0.2\r\n## 4          4.6         3.1          1.5         0.2\r\n## 5          5           3.6          1.4         0.2\r\n## 6          5.4         3.9          1.7         0.4\r\n## # ... with 144 more rows<\/code><\/pre>\n<ul>\n<li>Vary the selection of columns on which to apply the filtering criteria. <code>filter_at()<\/code> takes a <code>vars()<\/code> specification. The following R code apply the filtering criteria on the columns Sepal.Length and Sepal.Width:<\/li>\n<\/ul>\n<pre class=\"r\"><code>my_data2 %&gt;% filter_at(vars(starts_with(\"Sepal\")), any_vars(. &gt; 2.4))<\/code><\/pre>\n<pre><code>## # A tibble: 150 x 4\r\n##   Sepal.Length Sepal.Width Petal.Length Petal.Width\r\n##          &lt;dbl&gt;       &lt;dbl&gt;        &lt;dbl&gt;       &lt;dbl&gt;\r\n## 1          5.1         3.5          1.4         0.2\r\n## 2          4.9         3            1.4         0.2\r\n## 3          4.7         3.2          1.3         0.2\r\n## 4          4.6         3.1          1.5         0.2\r\n## 5          5           3.6          1.4         0.2\r\n## 6          5.4         3.9          1.7         0.4\r\n## # ... with 144 more rows<\/code><\/pre>\n<\/div>\n<div id=\"remove-missing-values\" class=\"section level2\">\n<h2>Remove missing values<\/h2>\n<p>We start by creating a data frame with missing values. In R <strong>NA<\/strong> (Not Available) is used to represent missing values:<\/p>\n<pre class=\"r\"><code># Create a data frame with missing data\r\nfriends_data &lt;- data_frame(\r\n  name = c(\"A\", \"B\", \"C\", \"D\"),\r\n  age = c(27, 25, 29, 26),\r\n  height = c(180, NA, NA, 169),\r\n  married = c(\"yes\", \"yes\", \"no\", \"no\")\r\n)\r\n# Print\r\nfriends_data<\/code><\/pre>\n<pre><code>## # A tibble: 4 x 4\r\n##   name    age height married\r\n##   &lt;chr&gt; &lt;dbl&gt;  &lt;dbl&gt; &lt;chr&gt;  \r\n## 1 A        27    180 yes    \r\n## 2 B        25     NA yes    \r\n## 3 C        29     NA no     \r\n## 4 D        26    169 no<\/code><\/pre>\n<p>Extract rows where height is NA:<\/p>\n<pre class=\"r\"><code>friends_data %&gt;% filter(is.na(height))<\/code><\/pre>\n<pre><code>## # A tibble: 2 x 4\r\n##   name    age height married\r\n##   &lt;chr&gt; &lt;dbl&gt;  &lt;dbl&gt; &lt;chr&gt;  \r\n## 1 B        25     NA yes    \r\n## 2 C        29     NA no<\/code><\/pre>\n<p>Exclude (drop) rows where height is NA:<\/p>\n<pre class=\"r\"><code>friends_data %&gt;% filter(!is.na(height))<\/code><\/pre>\n<pre><code>## # A tibble: 2 x 4\r\n##   name    age height married\r\n##   &lt;chr&gt; &lt;dbl&gt;  &lt;dbl&gt; &lt;chr&gt;  \r\n## 1 A        27    180 yes    \r\n## 2 D        26    169 no<\/code><\/pre>\n<div class=\"success\">\n<p>In the R code above, <strong>!is.na()<\/strong> means that \u201cwe don\u2019t want\u201d NAs.<\/p>\n<\/div>\n<\/div>\n<div id=\"select-random-rows-from-a-data-frame\" class=\"section level2\">\n<h2>Select random rows from a data frame<\/h2>\n<p>It\u2019s possible to select either n random rows with the function <code>sample_n()<\/code> or a random fraction of rows with <code>sample_frac()<\/code>. We first use the function <code>set.seed()<\/code> to initiate random number generator engine. This important for users to reproduce the analysis.<\/p>\n<pre class=\"r\"><code>set.seed(1234)\r\n# Extract 5 random rows without replacement\r\nmy_data %&gt;% sample_n(5, replace = FALSE)\r\n\r\n# Extract 5% of rows, randomly without replacement\r\nmy_data %&gt;% sample_frac(0.05, replace = FALSE)<\/code><\/pre>\n<\/div>\n<div id=\"select-top-n-rows-ordered-by-a-variable\" class=\"section level2\">\n<h2>Select top n rows ordered by a variable<\/h2>\n<p>Select the top 5 rows ordered by Sepal.Length<\/p>\n<pre class=\"r\"><code>my_data %&gt;% top_n(5, Sepal.Length)<\/code><\/pre>\n<pre><code>## # A tibble: 5 x 5\r\n##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species  \r\n##          &lt;dbl&gt;       &lt;dbl&gt;        &lt;dbl&gt;       &lt;dbl&gt; &lt;fct&gt;    \r\n## 1          7.7         3.8          6.7         2.2 virginica\r\n## 2          7.7         2.6          6.9         2.3 virginica\r\n## 3          7.7         2.8          6.7         2   virginica\r\n## 4          7.9         3.8          6.4         2   virginica\r\n## 5          7.7         3            6.1         2.3 virginica<\/code><\/pre>\n<p>Group by the column Species and select the top 5 of each group ordered by Sepal.Length:<\/p>\n<pre class=\"r\"><code>my_data %&gt;% \r\n  group_by(Species) %&gt;%\r\n  top_n(5, Sepal.Length)<\/code><\/pre>\n<pre><code>## # A tibble: 16 x 5\r\n## # Groups:   Species [3]\r\n##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species   \r\n##          &lt;dbl&gt;       &lt;dbl&gt;        &lt;dbl&gt;       &lt;dbl&gt; &lt;fct&gt;     \r\n## 1          5.8         4            1.2         0.2 setosa    \r\n## 2          5.7         4.4          1.5         0.4 setosa    \r\n## 3          5.7         3.8          1.7         0.3 setosa    \r\n## 4          5.5         4.2          1.4         0.2 setosa    \r\n## 5          5.5         3.5          1.3         0.2 setosa    \r\n## 6          7           3.2          4.7         1.4 versicolor\r\n## # ... with 10 more rows<\/code><\/pre>\n<\/div>\n<div id=\"summary\" class=\"section level2\">\n<h2>Summary<\/h2>\n<p>In this tutorial, we introduce how to filter a data frame rows using the dplyr package:<\/p>\n<ul>\n<li>Filter rows by logical criteria: <code>my_data %&gt;% filter(Sepal.Length &gt;7)<\/code><\/li>\n<li>Select n random rows: <code>my_data %&gt;% sample_n(10)<\/code><\/li>\n<li>Select a random fraction of rows: <code>my_data %&gt;% sample_frac(10)<\/code><\/li>\n<li>Select top n rows by values: <code>my_data %&gt;% top_n(10, Sepal.Length)<\/code><\/li>\n<\/ul>\n<\/div>\n<\/div>\n<p><!--end rdoc--><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This tutorial describes how to subset or extract data frame rows based on certain criteria. Additionally, we&#8217;ll describe how to subset a random number or fraction of rows. You will also learn how to remove rows with missing values in a given column.<\/p>\n","protected":false},"author":1,"featured_media":7731,"parent":0,"menu_order":2,"comment_status":"open","ping_status":"closed","template":"","class_list":["post-7233","dt_lessons","type-dt_lessons","status-publish","has-post-thumbnail","hentry","lesson_complexity-easy"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Subset Data Frame Rows in R - Datanovia<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Subset Data Frame Rows in R - Datanovia\" \/>\n<meta property=\"og:description\" content=\"This tutorial describes how to subset or extract data frame rows based on certain criteria. Additionally, we&#039;ll describe how to subset a random number or fraction of rows. You will also learn how to remove rows with missing values in a given column.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/\" \/>\n<meta property=\"og:site_name\" content=\"Datanovia\" \/>\n<meta property=\"article:modified_time\" content=\"2018-10-19T05:19:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/IMG_0294.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/\",\"url\":\"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/\",\"name\":\"Subset Data Frame Rows in R - Datanovia\",\"isPartOf\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/IMG_0294.jpg\",\"datePublished\":\"2018-10-01T21:10:41+00:00\",\"dateModified\":\"2018-10-19T05:19:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/#primaryimage\",\"url\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/IMG_0294.jpg\",\"contentUrl\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/IMG_0294.jpg\",\"width\":1024,\"height\":512},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.datanovia.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lessons\",\"item\":\"https:\/\/www.datanovia.com\/en\/lessons\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Subset Data Frame Rows in R\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#website\",\"url\":\"https:\/\/www.datanovia.com\/en\/\",\"name\":\"Datanovia\",\"description\":\"Data Mining and Statistics for Decision Support\",\"publisher\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.datanovia.com\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#organization\",\"name\":\"Datanovia\",\"url\":\"https:\/\/www.datanovia.com\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/09\/datanovia-logo.png\",\"contentUrl\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/09\/datanovia-logo.png\",\"width\":98,\"height\":99,\"caption\":\"Datanovia\"},\"image\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Subset Data Frame Rows in R - Datanovia","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/","og_locale":"en_US","og_type":"article","og_title":"Subset Data Frame Rows in R - Datanovia","og_description":"This tutorial describes how to subset or extract data frame rows based on certain criteria. Additionally, we'll describe how to subset a random number or fraction of rows. You will also learn how to remove rows with missing values in a given column.","og_url":"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/","og_site_name":"Datanovia","article_modified_time":"2018-10-19T05:19:37+00:00","og_image":[{"width":1024,"height":512,"url":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/IMG_0294.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/","url":"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/","name":"Subset Data Frame Rows in R - Datanovia","isPartOf":{"@id":"https:\/\/www.datanovia.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/#primaryimage"},"image":{"@id":"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/#primaryimage"},"thumbnailUrl":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/IMG_0294.jpg","datePublished":"2018-10-01T21:10:41+00:00","dateModified":"2018-10-19T05:19:37+00:00","breadcrumb":{"@id":"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/#primaryimage","url":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/IMG_0294.jpg","contentUrl":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/10\/IMG_0294.jpg","width":1024,"height":512},{"@type":"BreadcrumbList","@id":"https:\/\/www.datanovia.com\/en\/lessons\/subset-data-frame-rows-in-r\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.datanovia.com\/en\/"},{"@type":"ListItem","position":2,"name":"Lessons","item":"https:\/\/www.datanovia.com\/en\/lessons\/"},{"@type":"ListItem","position":3,"name":"Subset Data Frame Rows in R"}]},{"@type":"WebSite","@id":"https:\/\/www.datanovia.com\/en\/#website","url":"https:\/\/www.datanovia.com\/en\/","name":"Datanovia","description":"Data Mining and Statistics for Decision Support","publisher":{"@id":"https:\/\/www.datanovia.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.datanovia.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.datanovia.com\/en\/#organization","name":"Datanovia","url":"https:\/\/www.datanovia.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.datanovia.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/09\/datanovia-logo.png","contentUrl":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/09\/datanovia-logo.png","width":98,"height":99,"caption":"Datanovia"},"image":{"@id":"https:\/\/www.datanovia.com\/en\/#\/schema\/logo\/image\/"}}]}},"multi-rating":{"mr_rating_results":[]},"_links":{"self":[{"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/dt_lessons\/7233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/dt_lessons"}],"about":[{"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/types\/dt_lessons"}],"author":[{"embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/comments?post=7233"}],"version-history":[{"count":1,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/dt_lessons\/7233\/revisions"}],"predecessor-version":[{"id":7240,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/dt_lessons\/7233\/revisions\/7240"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/media\/7731"}],"wp:attachment":[{"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/media?parent=7233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}