个性化阅读
专注于IT技术分析

Tidyverse入门开发:教程

本文概述

本教程是我们一周前进行的Facebook Live活动的写照。主题为” Tidyverse简介”, 本教程将带你浏览我们在代码伴随会话中介绍的所有内容!

你可以在此处观看会议的第一部分:

第二部分在这里:

请注意, 你可以在此存储库中找到该会话的所有代码。

tidyverse的核心包括你可能在日常数据分析中使用的软件包, 例如用于数据可视化的ggplot2和用于数据整理的dplyr。在本教程中, 你将专注于这两个。

请记住, 包本质上是一组用于处理数据的工具。如果你想进一步了解R中的软件包, 请查阅本教程。

有关Tidyverse的更多信息, 请查看David Robinson的有关srcmini的Tidyverse入门课程和”学习Tidyverse”资源。

Tidyverse入门:教程1

首先, 如果尚未安装tidyverse, 请安装:

# Install the tidyverse
# install.packages("tidyverse")

现在你已经安装了tidyverse, 现在该加载数据并检查一些观察结果了。

在本教程中, 你将探索泰坦尼克号数据集, 其中每个观察值都是一个人, 每个变量都是诸如名称, 年龄和生存(或不存在)之类的特征。

像这样加载你的数据:

# Import the Tidyverse
library(tidyverse)

# Import data
passengers <- read.csv("data/train.csv")

# Check out the first several observations of your dataframe
passengers

##   PassengerId Survived Pclass
## 1           1        0      3
## 2           2        1      1
## 3           3        1      3
## 4           4        1      1
## 5           5        0      3
## 6           6        0      3
##                                                  Name    Sex Age SibSp
## 1                             Braund, Mr. Owen Harris   male  22     1
## 2 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female  38     1
## 3                              Heikkinen, Miss. Laina female  26     0
## 4        Futrelle, Mrs. Jacques Heath (Lily May Peel) female  35     1
## 5                            Allen, Mr. William Henry   male  35     0
## 6                                    Moran, Mr. James   male  NA     0
##   Parch           Ticket    Fare Cabin Embarked
## 1     0        A/5 21171  7.2500              S
## 2     0         PC 17599 71.2833   C85        C
## 3     0 STON/O2. 3101282  7.9250              S
## 4     0           113803 53.1000  C123        S
## 5     0           373450  8.0500              S
## 6     0           330877  8.4583              Q

请注意, 你提供给read.csv()的路径可以根据你的设置而改变。如果你只想保留相同的文件路径, 则可以随时在我们的GitHub存储库中检出该项目的文件夹结构, 你可以在此处找到它。

还要注意, 如果你想更多地了解执行乘客后看到的所有变量, 可以查看数据集描述。

要获得数据概述, 可以使用summary()函数:

# Summarize titanic
summary(passengers)

##   PassengerId       Survived          Pclass     
##  Min.   :  1.0   Min.   :0.0000   Min.   :1.000  
##  1st Qu.:223.5   1st Qu.:0.0000   1st Qu.:2.000  
##  Median :446.0   Median :0.0000   Median :3.000  
##  Mean   :446.0   Mean   :0.3838   Mean   :2.309  
##  3rd Qu.:668.5   3rd Qu.:1.0000   3rd Qu.:3.000  
##  Max.   :891.0   Max.   :1.0000   Max.   :3.000  
##                                                  
##                                     Name         Sex           Age       
##  Abbing, Mr. Anthony                  :  1   female:314   Min.   : 0.42  
##  Abbott, Mr. Rossmore Edward          :  1   male  :577   1st Qu.:20.12  
##  Abbott, Mrs. Stanton (Rosa Hunt)     :  1                Median :28.00  
##  Abelson, Mr. Samuel                  :  1                Mean   :29.70  
##  Abelson, Mrs. Samuel (Hannah Wizosky):  1                3rd Qu.:38.00  
##  Adahl, Mr. Mauritz Nils Martin       :  1                Max.   :80.00  
##  (Other)                              :885                NA's   :177    
##      SibSp           Parch             Ticket         Fare       
##  Min.   :0.000   Min.   :0.0000   1601    :  7   Min.   :  0.00  
##  1st Qu.:0.000   1st Qu.:0.0000   347082  :  7   1st Qu.:  7.91  
##  Median :0.000   Median :0.0000   CA. 2343:  7   Median : 14.45  
##  Mean   :0.523   Mean   :0.3816   3101295 :  6   Mean   : 32.20  
##  3rd Qu.:1.000   3rd Qu.:0.0000   347088  :  6   3rd Qu.: 31.00  
##  Max.   :8.000   Max.   :6.0000   CA 2144 :  6   Max.   :512.33  
##                                   (Other) :852                   
##          Cabin     Embarked
##             :687    :  2   
##  B96 B98    :  4   C:168   
##  C23 C25 C27:  4   Q: 77   
##  G6         :  4   S:644   
##  C22 C26    :  3           
##  D          :  3           
##  (Other)    :186

现在使用管道%>%(tidyverse中最方便的工具之一)执行相同的操作:

# Summarize titanic using a pipe
passengers %>%
  summary()

##   PassengerId       Survived          Pclass     
##  Min.   :  1.0   Min.   :0.0000   Min.   :1.000  
##  1st Qu.:223.5   1st Qu.:0.0000   1st Qu.:2.000  
##  Median :446.0   Median :0.0000   Median :3.000  
##  Mean   :446.0   Mean   :0.3838   Mean   :2.309  
##  3rd Qu.:668.5   3rd Qu.:1.0000   3rd Qu.:3.000  
##  Max.   :891.0   Max.   :1.0000   Max.   :3.000  
##                                                  
##                                     Name         Sex           Age       
##  Abbing, Mr. Anthony                  :  1   female:314   Min.   : 0.42  
##  Abbott, Mr. Rossmore Edward          :  1   male  :577   1st Qu.:20.12  
##  Abbott, Mrs. Stanton (Rosa Hunt)     :  1                Median :28.00  
##  Abelson, Mr. Samuel                  :  1                Mean   :29.70  
##  Abelson, Mrs. Samuel (Hannah Wizosky):  1                3rd Qu.:38.00  
##  Adahl, Mr. Mauritz Nils Martin       :  1                Max.   :80.00  
##  (Other)                              :885                NA's   :177    
##      SibSp           Parch             Ticket         Fare       
##  Min.   :0.000   Min.   :0.0000   1601    :  7   Min.   :  0.00  
##  1st Qu.:0.000   1st Qu.:0.0000   347082  :  7   1st Qu.:  7.91  
##  Median :0.000   Median :0.0000   CA. 2343:  7   Median : 14.45  
##  Mean   :0.523   Mean   :0.3816   3101295 :  6   Mean   : 32.20  
##  3rd Qu.:1.000   3rd Qu.:0.0000   347088  :  6   3rd Qu.: 31.00  
##  Max.   :8.000   Max.   :6.0000   CA 2144 :  6   Max.   :512.33  
##                                   (Other) :852                   
##          Cabin     Embarked
##             :687    :  2   
##  B96 B98    :  4   C:168   
##  C23 C25 C27:  4   Q: 77   
##  G6         :  4   S:644   
##  C22 C26    :  3           
##  D          :  3           
##  (Other)    :186

提示:如果你想进一步了解R中管道运算符的用法, 可以查看本教程。

删除具有缺失值的观察值后, 请执行相同的操作。这里有一个提示:你可以连接管道!

# Summarize titanic after dropping na
passengers %>%
  drop_na() %>%
  summary()

##   PassengerId       Survived          Pclass     
##  Min.   :  1.0   Min.   :0.0000   Min.   :1.000  
##  1st Qu.:222.2   1st Qu.:0.0000   1st Qu.:1.000  
##  Median :445.0   Median :0.0000   Median :2.000  
##  Mean   :448.6   Mean   :0.4062   Mean   :2.237  
##  3rd Qu.:677.8   3rd Qu.:1.0000   3rd Qu.:3.000  
##  Max.   :891.0   Max.   :1.0000   Max.   :3.000  
##                                                  
##                                     Name         Sex           Age       
##  Abbing, Mr. Anthony                  :  1   female:261   Min.   : 0.42  
##  Abbott, Mr. Rossmore Edward          :  1   male  :453   1st Qu.:20.12  
##  Abbott, Mrs. Stanton (Rosa Hunt)     :  1                Median :28.00  
##  Abelson, Mr. Samuel                  :  1                Mean   :29.70  
##  Abelson, Mrs. Samuel (Hannah Wizosky):  1                3rd Qu.:38.00  
##  Adahl, Mr. Mauritz Nils Martin       :  1                Max.   :80.00  
##  (Other)                              :708                               
##      SibSp            Parch                 Ticket         Fare       
##  Min.   :0.0000   Min.   :0.0000   347082      :  7   Min.   :  0.00  
##  1st Qu.:0.0000   1st Qu.:0.0000   3101295     :  6   1st Qu.:  8.05  
##  Median :0.0000   Median :0.0000   347088      :  6   Median : 15.74  
##  Mean   :0.5126   Mean   :0.4314   CA 2144     :  6   Mean   : 34.69  
##  3rd Qu.:1.0000   3rd Qu.:1.0000   382652      :  5   3rd Qu.: 33.38  
##  Max.   :5.0000   Max.   :6.0000   S.O.C. 14879:  5   Max.   :512.33  
##                                    (Other)     :679                   
##          Cabin     Embarked
##             :529    :  2   
##  B96 B98    :  4   C:130   
##  C23 C25 C27:  4   Q: 28   
##  G6         :  4   S:554   
##  C22 C26    :  3           
##  D          :  3           
##  (Other)    :167

你可能已经在上面编写的代码中注意到了样式上的一致性。那是因为你要遵循样式指南。一般来说, 在数据科学和编程/编码中, 习惯于尽快使用样式指南很重要。正如Hadley Wickham在tidyverse风格指南中所说的那样,

良好的编码风格就像正确的标点符号一样:你可以在没有标点符号的情况下进行管理, 但是这会使阅读变得更加轻松。

在下一节中, 你将处理与dplyr争用的数据, 以过滤数据, 对数据进行整理并通过使旧功能发生变化来创建新功能。

整理数据

现在是时候探索你的数据并初步了解数据集了。你将使用dplyr动词, 例如filter(), arrange()和mutate(), 它们完全按照它们说的去做。

让我们坐下来, 你想选择一组特定的观察结果, 例如, 那些”性别”为”女性”的观察结果。 dplyr允许我们直观地以反映你如何思考和谈论数据的语言进行操作。

筛选动词仅选择符合条件的观察值。实际观看:

# Filter to get all "male" rows
passengers %>%
  filter(Sex == "male")

##   PassengerId Survived Pclass                           Name  Sex Age
## 1           1        0      3        Braund, Mr. Owen Harris male  22
## 2           5        0      3       Allen, Mr. William Henry male  35
## 3           6        0      3               Moran, Mr. James male  NA
## 4           7        0      1        McCarthy, Mr. Timothy J male  54
## 5           8        0      3 Palsson, Master. Gosta Leonard male   2
## 6          13        0      3 Saundercock, Mr. William Henry male  20
##   SibSp Parch    Ticket    Fare Cabin Embarked
## 1     1     0 A/5 21171  7.2500              S
## 2     0     0    373450  8.0500              S
## 3     0     0    330877  8.4583              Q
## 4     0     0     17463 51.8625   E46        S
## 5     3     1    349909 21.0750              S
## 6     0     0 A/5. 2151  8.0500              S

查看上面代码块的结果时, 你会发现许多人似乎没有幸免于RMS Titanic的沉没。这很有趣, 你将在本教程的后面部分对此进行更严格的探索!

请注意, 你可以像句子一样阅读dplyr代码:取出数据, 然后(%>%)根据性别为男性的条件对其进行过滤。你在上面的代码块中看到的代码不会更改原始数据帧。 filter(Sex =” male”)是一个常见错误(Hugo犯了同样的错误!);有一个很酷的tidyverse错误指南。

# Filter to get all "female" rows
passengers %>%
  filter(Sex == "female")

##   PassengerId Survived Pclass
## 1           2        1      1
## 2           3        1      3
## 3           4        1      1
## 4           9        1      3
## 5          10        1      2
## 6          11        1      3
##                                                  Name    Sex Age SibSp
## 1 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female  38     1
## 2                              Heikkinen, Miss. Laina female  26     0
## 3        Futrelle, Mrs. Jacques Heath (Lily May Peel) female  35     1
## 4   Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) female  27     0
## 5                 Nasser, Mrs. Nicholas (Adele Achem) female  14     1
## 6                     Sandstrom, Miss. Marguerite Rut female   4     1
##   Parch           Ticket    Fare Cabin Embarked
## 1     0         PC 17599 71.2833   C85        C
## 2     0 STON/O2. 3101282  7.9250              S
## 3     0           113803 53.1000  C123        S
## 4     2           347742 11.1333              S
## 5     0           237736 30.0708              C
## 6     1          PP 9549 16.7000    G6        S

至少从轶事上讲, 女性似乎更有可能在泰坦尼克号灾难中幸存下来。

当你探索数据时, 你应该问并回答自己可能会感兴趣的问题!现在, 你可能想通过增加票价来安排()观测, 以查看是否可以注意到任何趋势。你可以使用动词ranging()实现此目的:

# Arrange by increasing Fare
passengers %>%
  arrange(Fare)

##   PassengerId Survived Pclass                            Name  Sex Age
## 1         180        0      3             Leonard, Mr. Lionel male  36
## 2         264        0      1           Harrison, Mr. William male  40
## 3         272        1      3    Tornquist, Mr. William Henry male  25
## 4         278        0      2     Parkes, Mr. Francis "Frank" male  NA
## 5         303        0      3 Johnson, Mr. William Cahoone Jr male  19
## 6         414        0      2  Cunningham, Mr. Alfred Fleming male  NA
##   SibSp Parch Ticket Fare Cabin Embarked
## 1     0     0   LINE    0              S
## 2     0     0 112059    0   B94        S
## 3     0     0   LINE    0              S
## 4     0     0 239853    0              S
## 5     0     0   LINE    0              S
## 6     0     0 239853    0              S

许多人付的钱少了, 却没有幸免于难。你只是通过重新排列数据而发现了一个有趣的东西!

你也可以通过降低票价来安排:

# Arrange by decreasing Fare
passengers %>%
  arrange(desc(Fare))

##   PassengerId Survived Pclass                               Name    Sex
## 1         259        1      1                   Ward, Miss. Anna female
## 2         680        1      1 Cardeza, Mr. Thomas Drake Martinez   male
## 3         738        1      1             Lesurer, Mr. Gustave J   male
## 4          28        0      1     Fortune, Mr. Charles Alexander   male
## 5          89        1      1         Fortune, Miss. Mabel Helen female
## 6         342        1      1     Fortune, Miss. Alice Elizabeth female
##   Age SibSp Parch   Ticket     Fare       Cabin Embarked
## 1  35     0     0 PC 17755 512.3292                    C
## 2  36     0     1 PC 17755 512.3292 B51 B53 B55        C
## 3  35     0     0 PC 17755 512.3292        B101        C
## 4  19     3     2    19950 263.0000 C23 C25 C27        S
## 5  23     3     2    19950 263.0000 C23 C25 C27        S
## 6  24     3     2    19950 263.0000 C23 C25 C27        S

高端确实有更多的幸存者!

有时你可能希望创建新变量。你知道变量Parch是父母和子女的数量, 而SibSp是兄弟姐妹和配偶的数量。你可以将它们加在一起以获得新的变量FamSize。这是功能工程, 并且在很多时候是机器学习的重要组成部分!

现在, 要创建新变量, 你可以将原始变量mutate()到新变量中。

# Create new column FamSize (size of family)
passengers %>%
  mutate(FamSize = Parch + SibSp)

##   PassengerId Survived Pclass
## 1           1        0      3
## 2           2        1      1
## 3           3        1      3
## 4           4        1      1
## 5           5        0      3
## 6           6        0      3
##                                                  Name    Sex Age SibSp
## 1                             Braund, Mr. Owen Harris   male  22     1
## 2 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female  38     1
## 3                              Heikkinen, Miss. Laina female  26     0
## 4        Futrelle, Mrs. Jacques Heath (Lily May Peel) female  35     1
## 5                            Allen, Mr. William Henry   male  35     0
## 6                                    Moran, Mr. James   male  NA     0
##   Parch           Ticket    Fare Cabin Embarked FamSize
## 1     0        A/5 21171  7.2500              S       1
## 2     0         PC 17599 71.2833   C85        C       1
## 3     0 STON/O2. 3101282  7.9250              S       0
## 4     0           113803 53.1000  C123        S       1
## 5     0           373450  8.0500              S       0
## 6     0           330877  8.4583              Q       0

请注意, mutate()可用于创建新列, 但也可以从生物学的角度来看, 与修改突变的方式几乎相同, 可以修改现有列。这不是完全正确, 而是一种为动词选择提供上下文的好方法。

现在有了额外的变量, 你可以提出其他问题, 例如”大家庭的生存率是否可能较低?”。

要检验此假设, 请如上所述创建一个新变量FamSize作为Parch和SibSp的总和, 然后通过减小FamSize进行排列:

# Create new column FamSize (size of family)
# Arrange by decreasing FamSize
passengers %>%
  mutate(FamSize = Parch + SibSp) %>%
  arrange(desc(FamSize))

##   PassengerId Survived Pclass                         Name    Sex Age
## 1         160        0      3   Sage, Master. Thomas Henry   male  NA
## 2         181        0      3 Sage, Miss. Constance Gladys female  NA
## 3         202        0      3          Sage, Mr. Frederick   male  NA
## 4         325        0      3     Sage, Mr. George John Jr   male  NA
## 5         793        0      3      Sage, Miss. Stella Anna female  NA
## 6         847        0      3     Sage, Mr. Douglas Bullen   male  NA
##   SibSp Parch   Ticket  Fare Cabin Embarked FamSize
## 1     8     2 CA. 2343 69.55              S      10
## 2     8     2 CA. 2343 69.55              S      10
## 3     8     2 CA. 2343 69.55              S      10
## 4     8     2 CA. 2343 69.55              S      10
## 5     8     2 CA. 2343 69.55              S      10
## 6     8     2 CA. 2343 69.55              S      10

顶级家庭中的每个人都无法生存!这可能说明:也许如果你是一个大家庭的成员, 那么你将无法及时离开泰坦尼克号。

但是, 由于零和1表示的含义并不多, 因此请将Survived变量的值突变为字符串No和Yes(并创建新的数据框!):

# Turn numerical values of Survived column to "No" & "Yes" (new data frame)
passengers1 <- passengers %>%
  mutate(Survived = ifelse(Survived == 0, "No", "Yes"))
passengers1

##   PassengerId Survived Pclass
## 1           1       No      3
## 2           2      Yes      1
## 3           3      Yes      3
## 4           4      Yes      1
## 5           5       No      3
## 6           6       No      3
##                                                  Name    Sex Age SibSp
## 1                             Braund, Mr. Owen Harris   male  22     1
## 2 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female  38     1
## 3                              Heikkinen, Miss. Laina female  26     0
## 4        Futrelle, Mrs. Jacques Heath (Lily May Peel) female  35     1
## 5                            Allen, Mr. William Henry   male  35     0
## 6                                    Moran, Mr. James   male  NA     0
##   Parch           Ticket    Fare Cabin Embarked
## 1     0        A/5 21171  7.2500              S
## 2     0         PC 17599 71.2833   C85        C
## 3     0 STON/O2. 3101282  7.9250              S
## 4     0           113803 53.1000  C123        S
## 5     0           373450  8.0500              S
## 6     0           330877  8.4583              Q

绘制数据

要使用ggplot2绘制数据, 请指定三件事:

  • 你的资料
  • 你的美学(例如, x轴上的内容)
  • 你的图层(例如, barplot, scatterplot)

首先, 你将绘制一个性行为图, 以查看泰坦尼克号上记录了多少只雄性和雌性:

# Plot barplot of passenger Sex
ggplot(passengers, aes(x = Sex)) +
  geom_bar()
Tidyverse入门:教程2

从上图可以看出, RMS泰坦尼克号上约有600名男性和300名女性。

注意, aes()函数实际上是一种将图表的美感映射到数据中变量的方法。有关更多信息, 请参阅Chester Ismay和Albert Y. Kim的Modern Dive。

现在是时候进行一些散点图了。给定乘客的年龄是否与其所支付的票价相关?

# Scatter plot of Age vs Fare
ggplot(passengers, aes(x = Age, y = Fare)) +
  geom_point()

## Warning: Removed 177 rows containing missing values (geom_point).
Tidyverse入门:教程3

你仅从这一情节中收集了很多见解!你会发现, 许多支付较高费用的人也实际上年龄较大。票价可能会根据年龄而有所增加…此外, 你会立即在情节顶部看到两个异常值, 你可能需要对其进行进一步调查!

你可以像阅读句子一样阅读ggplot2代码, 就像上面的dplyr代码一样:”你将数据视为泰坦尼克号, 然后将Age映射到x轴, 将Fare映射到y轴, 在图的图层上添加点。”

让我们以前面的图为依据, 按性别为每个点上色, 以查看性别, 年龄和票价之间的任何相关性:

# Scatter plot of Age vs Fare colored by Sex
ggplot(passengers %>% drop_na(), aes(x = Age, y = Fare, color = Sex)) +
  geom_point()
Tidyverse入门:教程4

你会发现, 底层的很多人薪水较低, 都是男人。在地块的顶部, 你还有一群年龄稍大的女性, 也花了更多钱才能登上《泰坦尼克号》。

在一张图上可视化三个变量(年龄和票价两个数字, 性别一个性别)非常酷, 但是如果你想将Survived变量放入混合图中以查看是否存在明显趋势, 该怎么办?你可以使用构面进行此操作, 这是一种同时生成多个图的方法:

# Scatter plot of Age vs Fare colored by Sex faceted by Survived
ggplot(passengers1, aes(x = Age, y = Fare, color = Sex)) +
  geom_point() +
  facet_grid(~Survived)

## Warning: Removed 177 rows containing missing values (geom_point).
Tidyverse入门:教程5

突然之间, 你看到在上一个情节中提到的许多女性都幸存了下来, 而大多数没有幸存下来的妇女支付了50个单位。提示:尝试自己找出货币单位!

现在, 让我们重做你的”乘客性爱”酒吧图, 这次根据”幸存者”填写你的酒吧:

# Plot barplot of passenger Sex & fill according to Survival
ggplot(passengers1, aes(x = Sex, fill = Survived)) +
  geom_bar()
Tidyverse入门:教程6

你会看到, 很大一部分男人没有生存, 而超过三分之二的女人没有生存!

汇总和分组数据

使用summarise()动词找出已支付的平均票价:

# Check out mean Fare
passengers %>%
  summarise(meanFare = mean(Fare))

##   meanFare
## 1 32.20421

使用summarise()动词找出已支付的中位数车费:

# Check out mean Fare
passengers %>%
  summarise(medianFare = median(Fare))

##   medianFare
## 1    14.4542

你还可以使用filter()和summarise()动词来找出男性平均支付的车费:

# Check out mean Fare for men
passengers %>%
  filter(Sex == "male") %>%
  summarise(meanFare = mean(Fare))

##   meanFare
## 1 25.52389

使用filter()和summarise()动词找出女性平均车费:

# Check out mean Fare for women
passengers %>%
  filter(Sex == "female") %>%
  summarise(meanFare = mean(Fare))

##   meanFare
## 1 44.47982

使用filter()和summarise()动词来找出女性平均支付的车费以及有多少女性幸存下来:

# Check out mean Fare & number of survivors for women
passengers %>%
  filter(Sex == "female") %>%
  summarise(meanFare = mean(Fare), numSurv = sum(Survived))

##   meanFare numSurv
## 1 44.47982     233

使用group_by()和summarise()动词来查找平均性别和幸存者人数与性别的关系:

# Check out mean Fare & number of survivors grouped by Sex
passengers %>%
  group_by(Sex) %>%
  summarise(meanFare = mean(Fare), numSurv = sum(Survived))

## # A tibble: 2 x 3
##   Sex    meanFare numSurv
##   <fct>     <dbl>   <int>
## 1 female     44.5     233
## 2 male       25.5     109

使用group_by()和summarise()动词来查找幸存者的平均票价和所占比例与性别的关系:

# Check out mean Fare & proportion of survivors grouped by Sex
passengers %>%
  group_by(Sex) %>%
  summarise(meanFare = mean(Fare), numSurv = sum(Survived)/n())

## # A tibble: 2 x 3
##   Sex    meanFare numSurv
##   <fct>     <dbl>   <dbl>
## 1 female     44.5   0.742
## 2 male       25.5   0.189

总结

在本教程中, 你将使用tidyverse和tidy工具进行数据分析的基础知识从零变为一。你已经学习了如何使用dplyr和ggplot2对数据进行过滤(), 对数据进行sort()和mutate(), 绘制和汇总(), 以及通过编写反映你思考和谈论数据方式的代码。恭喜你我鼓励你通过参加David Robinson的Tidyverse入门课程并在你感兴趣的其他数据集中使用这些工具来学习更多。在Twitter @srcmini和@hugobowne上与我们分享这些分析。谢谢阅读。

赞(0)
未经允许不得转载:srcmini » Tidyverse入门开发:教程

评论 抢沙发

评论前必须登录!