在 R 中将计算列添加到矩阵
本文展示了两个任务:向现有矩阵添加一列,并在新列中包含计算值,例如总和或平均值。
在 R 中将计算列添加到矩阵
我们可以使用 cbind()
函数将两个具有相同行的矩阵组合在一起。
同样的函数也可以在矩阵中添加一个向量。向量的元素数应与矩阵中的行数相同。
我们将按照我们想要结果的顺序将矩阵或向量的名称传递给 cbind()
。
示例代码:
# We will create two matrices with the
# same number of rows and join them
# using cbind.
i = matrix(data=5:16, nrow=4)
ii = matrix(data=17:24, nrow=4)
# Combine i and ii in both orders and
# check the results.
cbind(i, ii)
cbind(ii,i)
# To illustrate adding a column
# we will create and add a vector.
# The number of elements must
# match the row count of the matrix.
z = c(seq(from=60, to=90, by=10))
# Add z to one of the matrices as a column.
cbind(ii, z)
# We see the variable name.
# Use as.matrix to remove the variable name.
cbind(ii, as.matrix(z))
输出:
> # Combine i and ii in both orders and
> # check the results.
> cbind(i, ii)
[,1] [,2] [,3] [,4] [,5]
[1,] 5 9 13 17 21
[2,] 6 10 14 18 22
[3,] 7 11 15 19 23
[4,] 8 12 16 20 24
>
> cbind(ii,i)
[,1] [,2] [,3] [,4] [,5]
[1,] 17 21 5 9 13
[2,] 18 22 6 10 14
[3,] 19 23 7 11 15
[4,] 20 24 8 12 16
>
> # Add z to one of the matrices as a column.
> cbind(ii, z)
z
[1,] 17 21 60
[2,] 18 22 70
[3,] 19 23 80
[4,] 20 24 90
> # We see the variable name.
>
> # Use as.matrix to remove the variable name.
> cbind(ii, as.matrix(z))
[,1] [,2] [,3]
[1,] 17 21 60
[2,] 18 22 70
[3,] 19 23 80
[4,] 20 24 90
在 R 中创建和添加计算列
我们需要将合适的函数传递给 cbind()
函数以添加计算列。
合适的函数是那些将应用于每一行的函数。它们包括 rowSums()
和 rowMeans()
函数,以及可在 apply()
函数中使用的其他函数。
对于函数的数据源,我们可以传递整个矩阵,也可以使用子设置语法选择所需的列。
在下面的代码中,rowSums()
函数计算第 1 列和第 2 列的总和,apply()
函数用于计算第 2 列和第 3 列的 mean
。
apply()
函数的第二个参数 1
表示我们将后面的函数 mean
应用于行。
示例代码:
# Add a column with the sum of columns 1 and 2 of i.
cbind(i, rowSums(i[,c(1,2)])) # Based on the apply function.
# Add a column with the mean of columns 2 and 3 of i.
cbind(i, apply(i[,c(2,3)], 1, mean)) # Directly use the apply function.
输出:
> # Add a column with the sum of columns 1 and 2 of i.
> cbind(i, rowSums(i[,c(1,2)])) # Based on the apply function.
[,1] [,2] [,3] [,4]
[1,] 5 9 13 14
[2,] 6 10 14 16
[3,] 7 11 15 18
[4,] 8 12 16 20
>
> # Add a column with the mean of columns 2 and 3 of i.
> cbind(i, apply(i[,c(2,3)], 1, mean)) # Directly use the apply function.
[,1] [,2] [,3] [,4]
[1,] 5 9 13 11
[2,] 6 10 14 12
[3,] 7 11 15 13
[4,] 8 12 16 14
有关更多详细信息,请参阅 matrix
、cbind
、rowSums
和 apply
函数的文档。
相关文章
R 中具有多个条件的函数向量化
发布时间:2023/03/21 浏览次数:64 分类:编程语言
-
一项常见的数据分析任务是根据同一行的其他列使用一个或多个条件创建或更新数据框列。 如果我们尝试使用 if 语句来执行此操作,则只会使用第一行来测试条件,并且会根据该行更
在 R 中读取 xlsx 文件
发布时间:2023/03/21 浏览次数:66 分类:编程语言
-
在这篇文章中,你将会了解到两个在 R 中读取 xlsx 文件的最完整和最容易使用的库:readxl 和 openxlsx。