R语言 用Dplyr包在R中操纵数据
在这篇文章中,让我们讨论在R编程语言中操作数据。
为了处理数据,R提供了一个名为dplyr的库,其中包括许多内置的方法来处理数据。因此,要使用数据处理功能,首先需要使用 _ library(dplyr_ )一行代码导入dplyr包。下面是dplyr包中的一些数据处理函数的列表。
函数名称 | 描述 |
---|---|
filter() | 产生一个数据框架的子集。 |
distinct() | 删除数据框中重复的行。 |
arrange() | 对数据框中的行进行重新排序 |
select() | 在一个数据框架的必要列中产生数据 |
rename() | 重命名变量名称 |
mutate() | 创建新的变量而不丢弃旧的变量。 |
transmute() | 通过丢弃旧的变量来创建新的变量。 |
summarize() | 给出总结的数据,如平均数、总和等。 |
filter()方法
filter()函数用于产生满足filter()方法中指定条件的数据子集。在条件中,我们可以使用条件运算符、逻辑运算符、NA值、范围运算符等来过滤掉数据。filter()函数的语法如下所示
filter(dataframeName, condition)
例子
在下面的代码中,我们使用filter()函数从 “stats “数据框中获取了得分超过100的球员的数据。
# import dplyr package
library(dplyr)
# create a data frame
stats <- data.frame(player=c('A', 'B', 'C', 'D'),
runs=c(100, 200, 408, 19),
wickets=c(17, 20, NA, 5))
# fetch players who scored more
# than 100 runs
filter(stats, runs>100)
输出
player runs wickets
1 B 200 20
2 C 408 NA
distinct()方法
distinct()方法从数据框中删除重复的行,或者基于指定的列。distinct()方法的语法如下所示
distinct(dataframeName, col1, col2,..., .keep_all=TRUE)
例子
在这个例子中,我们使用distinct()方法从数据框中移除重复的行,同时也基于指定的列移除重复的行。
# import dplyr package
library(dplyr)
# create a data frame
stats <- data.frame(player=c('A', 'B', 'C', 'D', 'A', 'A'),
runs=c(100, 200, 408, 19, 56, 100),
wickets=c(17, 20, NA, 5, 2, 17))
# removes duplicate rows
distinct(stats)
#remove duplicates based on a column
distinct(stats, player, .keep_all = TRUE)
输出
player runs wickets
1 A 100 17
2 B 200 20
3 C 408 NA
4 D 19 5
5 A 56 2
player runs wickets
1 A 100 17
2 B 200 20
3 C 408 NA
4 D 19 5
arrange()方法
在R语言中,arrange()方法被用来根据指定的列来排列行。arrange()方法的语法规定如下
arrange(dataframeName, columnName)
例子
在下面的代码中,我们使用arrange()函数根据运行情况从低到高对数据进行排序。
# import dplyr package
library(dplyr)
# create a data frame
stats <- data.frame(player=c('A', 'B', 'C', 'D'),
runs=c(100, 200, 408, 19),
wickets=c(17, 20, NA, 5))
# ordered data based on runs
arrange(stats, runs)
输出
player runs wickets
1 D 19 5
2 A 100 17
3 B 200 20
4 C 408 NA
select()方法
select()方法用于通过在select()方法中指定所需的列名,将所需的列提取为一个表格。select()方法的语法如下所示
select(dataframeName, col1,col2,...)
例子
在下面的代码中,我们只用select()方法获取了球员、门将列的数据。
# import dplyr package
library(dplyr)
# create a data frame
stats <- data.frame(player=c('A', 'B', 'C', 'D'),
runs=c(100, 200, 408, 19),
wickets=c(17, 20, NA, 5))
# fetch required column data
select(stats, player,wickets)
输出
player wickets
1 A 17
2 B 20
3 C NA
4 D 5
rename()方法
rename()函数是用来改变列名的。这可以通过下面的语法来完成
rename(dataframeName, newName=oldName)
例子
在这个例子中,我们将统计学数据框架中的列名 “runs “改为 “runs_scored”。
# import dplyr package
library(dplyr)
# create a data frame
stats <- data.frame(player=c('A', 'B', 'C', 'D'),
runs=c(100, 200, 408, 19),
wickets=c(17, 20, NA, 5))
# renaming the column
rename(stats, runs_scored=runs)
输出
player runs_scored wickets
1 A 100 17
2 B 200 20
3 C 408 NA
4 D 19 5
mutate()和transmute()方法
这些方法用于创建新的变量。mutate()函数创建新的变量,但不放弃旧的变量,而transmute()函数则放弃旧的变量并创建新的变量。这两种方法的语法如下所述
mutate(dataframeName, newVariable=formula)
transmute(dataframeName, newVariable=formula)
例子
在这个例子中,我们使用mutate()和transmute()方法创建了一个新列avg。
# import dplyr package
library(dplyr)
# create a data frame
stats <- data.frame(player=c('A', 'B', 'C', 'D'),
runs=c(100, 200, 408, 19),
wickets=c(17, 20, 7, 5))
# add new column avg
mutate(stats, avg=runs/4)
# drop all and create a new column
transmute(stats, avg=runs/4)
输出
player runs wickets avg
1 A 100 17 25.00
2 B 200 20 50.00
3 C 408 7 102.00
4 D 19 5 4.75
avg
1 25.00
2 50.00
3 102.00
4 4.75
在这里,mutate()函数为现有的数据框架添加了一个新的列,但没有删除旧的列,而transmute()函数创建了一个新的变量,但删除了所有的旧列。
summarize()方法
使用summaryize方法,我们可以通过使用sum()、mean()等聚合函数对数据框中的数据进行总结。summarize()方法的语法规定如下
summarize(dataframeName, aggregate_function(columnName))
例子
在下面的代码中,我们使用summaryize()方法展示了运行列中的汇总数据。
# import dplyr package
library(dplyr)
# create a data frame
stats <- data.frame(player=c('A', 'B', 'C', 'D'),
runs=c(100, 200, 408, 19),
wickets=c(17, 20, 7, 5))
# summarize method
summarize(stats, sum(runs), mean(runs))
输出
sum(runs) mean(runs)
1 727 181.75