如何在 R 中找到 n 个列的按行求和?


可以使用 rowSums 函数以及使用单个方括号对列进行子集选择来找到 n 个列的按行求和。

例如,如果我们有一个名为 df 的数据框,其中包含五列,并且我们想找到最后三列的按行求和,则可以使用以下命令:

df$Sum_3<-rowSums(df[,3:5])

示例 1

以下代码片段创建了一个示例数据框:

x1<-round(rnorm(20),2)
x2<-round(rnorm(20),2)
x3<-round(rnorm(20),2)
df1<-data.frame(x1,x2,x3)
df1

创建了以下数据框:

    x1     x2    x3
1  -0.66  1.01  -0.44
2  -2.05 -0.47   0.42
3   1.11  1.47   1.04
4  -2.55 -0.42  -0.46
5  -0.50 -1.98  -0.41
6  -2.16 -0.34  -0.55
7   0.29 -0.58   0.42
8  -0.67  1.71  -0.86
9  -0.93  0.00   0.00
10  0.30 -0.87   0.27
11  1.27 -1.60  -0.49
12  0.73  1.16  -1.24
13 -0.71  0.20  -1.18
14 -0.31  1.16   0.24
15 -0.76  0.86  -0.70
16  1.11 -0.25  -0.48
17 -0.88 -0.43   0.10
18  0.50 -2.05   0.36
19 -0.30  0.56  -0.97
20 -1.76 -1.39   1.10

要查找列 x2 和 x3 的按行求和,请将以下代码添加到上述代码片段中:

x1<-round(rnorm(20),2)
x2<-round(rnorm(20),2)
x3<-round(rnorm(20),2)
df1<-data.frame(x1,x2,x3)
df1$Sum_x2_x3<-rowSums(df1[,2:3])
df1

输出

如果将以上所有给定的代码片段作为单个程序执行,则会生成以下输出:

     x1    x2    x3   Sum_x2_x3
1  -0.66  1.01 -0.44  0.57
2  -2.05 -0.47  0.42 -0.05
3   1.11  1.47  1.04  2.51
4  -2.55 -0.42 -0.46 -0.88
5  -0.50 -1.98 -0.41 -2.39
6  -2.16 -0.34 -0.55 -0.89
7   0.29 -0.58  0.42 -0.16
8  -0.67  1.71 -0.86  0.85
9  -0.93  0.00  0.00  0.00
10  0.30 -0.87  0.27 -0.60
11  1.27 -1.60 -0.49 -2.09
12  0.73  1.16 -1.24 -0.08
13 -0.71  0.20 -1.18 -0.98
14 -0.31  1.16  0.24  1.40
15 -0.76  0.86 -0.70  0.16
16  1.11 -0.25 -0.48 -0.73
17 -0.88 -0.43  0.10 -0.33
18  0.50 -2.05  0.36 -1.69
19 -0.30  0.56 -0.97 -0.41
20 -1.76 -1.39  1.10 -0.29

示例 2

以下代码片段创建了一个示例数据框:

y1<-rpois(20,1)
y2<-rpois(20,5)
y3<-rpois(20,2)
y4<-rpois(20,2)
df2<-data.frame(y1,y2,y3,y4)
df2

创建了以下数据框:

   y1 y2 y3 y4
1  1  6  2  2
2  1  4  1  0
3  1  6  0  2
4  2  9  4  2
5  0  7  1  2
6  1  5  1  1
7  2  0  3  2
8  1  2  5  1
9  1  6  1  5
10 0  3  1  2
11 1  4  2  3
12 1  7  3  1
13 0  8  1  2
14 1  5  2  3
15 0 10  3  0
16 2  2  1  2
17 3  5  4  2
18 0  6  2  1
19 2  2  3  1
20 0  6  1  2

要查找列 y1 和 y2 的按行求和,请将以下代码添加到上述代码片段中:

y1<-rpois(20,1)
y2<-rpois(20,5)
y3<-rpois(20,2)
y4<-rpois(20,2)
df2<-data.frame(y1,y2,y3,y4)
df2$Sum_y1_y2<-rowSums(df2[,1:2])
df2

输出

如果将以上所有给定的代码片段作为单个程序执行,则会生成以下输出:

   y1 y2 y3 y4 Sum_y1_y2
1  1  6  2  2   7
2  1  4  1  0   5
3  1  6  0  2   7
4  2  9  4  2  11
5  0  7  1  2   7
6  1  5  1  1   6
7  2  0  3  2   2
8  1  2  5  1   3
9  1  6  1  5   7
10 0  3  1  2   3
11 1  4  2  3   5
12 1  7  3  1   8
13 0  8  1  2   8
14 1  5  2  3   6
15 0 10  3  0  10
16 2  2  1  2   4
17 3  5  4  2   8
18 0  6  2  1   6
19 2  2  3  1   4
20 0  6  1  2   6

更新于: 2021年11月23日

3K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告