使用rowSums在dplyr中突变列
在这篇文章中,我们将讨论如何使用R编程语言中的dplyr包来突变数据框架中的列。
安装
该包可以通过以下命令下载并安装在R工作空间中。
安装命令 - install.packages(“dplyr”)
加载命令 - library(“dplyr”)
使用的函数
- mutate(): 这个包中的mutate()方法增加了新的变量并保留了现有的变量。mutate方法不影响数据框架的行数。然而,根据在数据框架中创建的组,可能会发生重新分组。数据框架的属性也会被保留。
语法
mutate (new-col-name = rowSums())
- rowSums(): rowSums()方法计算一个数字数组、矩阵或数据框架的每一行的总和。我们可以在这个方法中选择特定的行来计算总和。因为,默认创建的矩阵的行和列的名称是使用X1, X2…等标签,我们可以使用这些名称来指定它们。这些行可以用select_方法来选择。
语法
select_(. , col-names. )
参数
- col-names:数据框架中的列名
例子 1:
在这个例子中,我们将创建一个有3列的矩阵的数据框架–X1、X2、X3,所有的列都被选中并计算它们的行和。一个额外的列 “row_sum “被附加到数据框架的末尾。
# load the dplyr library
library("dplyr")
# creating the dataframe
# from the matrix
data_frame < - data.frame(matrix(rnorm(30), 10, 3),
stringsAsFactors=FALSE)
print("Original DataFrame")
print(data_frame)
# computing row sums
data_mod < - data_frame % > % mutate(row_sum=rowSums(
select_(., "X1", "X2", "X3")))
# printing modified dataframe
print("Modified DataFrame")
print(data_mod)
输出
[1] "Original DataFrame"
X1 X2 X3
1 -2.1548694 -1.1243811 -1.3944730
2 1.1023396 -2.0153914 -1.6321950
3 -0.2959568 -0.6511423 -0.2601204
4 -0.1503434 -0.3802135 0.5651982
5 0.7330868 1.8792182 0.1205579
6 0.5351399 -0.1250861 -0.4986981
7 -0.4058386 -0.0359763 -0.8261032
8 -1.3560053 -0.2901260 -1.1033241
9 -0.6176755 -0.8223494 0.8507067
10 0.7307755 -1.2664778 1.2097483
[1] "Modified DataFrame"
X1 X2 X3 row_sum
1 -2.1548694 -1.1243811 -1.3944730 -4.67372344
2 1.1023396 -2.0153914 -1.6321950 -2.54524683
3 -0.2959568 -0.6511423 -0.2601204 -1.20721946
4 -0.1503434 -0.3802135 0.5651982 0.03464132
5 0.7330868 1.8792182 0.1205579 2.73286285
6 0.5351399 -0.1250861 -0.4986981 -0.08864431
7 -0.4058386 -0.0359763 -0.8261032 -1.26791811
8 -1.3560053 -0.2901260 -1.1033241 -2.74945549
9 -0.6176755 -0.8223494 0.8507067 -0.58931825
10 0.7307755 -1.2664778 1.2097483 0.67404601
例2:
在这个例子中,X1和X3的行和被计算出来。在最终的输出中只有这些列被返回。
# load the package
library("dplyr")
# creating the dataframe
data_frame < - data.frame(matrix(rnorm(30), 10, 3),
stringsAsFactors=FALSE)
print("Original DataFrame")
print(data_frame)
# computing row sums
data_mod < -
data_frame % >%
mutate(row_sum=rowSums(select(., .dots=all_of(c("X1", "X2")))))
# printing modified dataframe
print("Modified DataFrame")
print(data_mod)
输出
[1] "Original DataFrame"
X1 X2 X3
1 -0.01475802 -2.0928792 0.6990158
2 0.09758214 0.9327706 -0.7551849
3 1.73099513 -2.0445329 0.7353809
4 -0.98991323 -0.8638640 0.7545635
5 -0.10079777 -1.0169922 -2.2176920
6 -0.32026943 -0.2890030 1.0493662
7 0.13442533 -2.3674214 0.4975756
8 -1.47351401 -1.1391841 -1.0987409
9 1.05674759 -0.7550495 1.0312730
10 -0.14471879 0.7089866 0.1736686
[1] "Modified DataFrame"
X1 X2 X3 row_sum
1 -0.01475802 -2.0928792 0.6990158 -2.1076372
2 0.09758214 0.9327706 -0.7551849 1.0303527
3 1.73099513 -2.0445329 0.7353809 -0.3135378
4 -0.98991323 -0.8638640 0.7545635 -1.8537772
5 -0.10079777 -1.0169922 -2.2176920 -1.1177900
6 -0.32026943 -0.2890030 1.0493662 -0.6092725
7 0.13442533 -2.3674214 0.4975756 -2.2329960
8 -1.47351401 -1.1391841 -1.0987409 -2.6126981
9 1.05674759 -0.7550495 1.0312730 0.3016981
10 -0.14471879 0.7089866 0.1736686 0.5642678