如何在R数据框中按行求所有列的和?


要按行求所有列的和,可以使用`rowSums`函数。

例如,如果我们有一个名为`df`的数据框,包含五列,例如x、y、z、a和b,并且我们想按行对所有这些列求和,那么可以使用以下命令:

df$Total_sum<-rowSums(df[,c("x","y","z","a","b")])

示例1

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

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

创建以下数据框:

       x1          x2           x3
1  -0.71576837   1.93636693   0.03572217
2   0.10588952  -0.18761810  -0.51570157
3   0.71766454  -0.48477796  -0.45083675
4  -0.51649822  -0.04961815  -0.50535820
5  -0.14545158   0.40937268   1.46923050
6   0.89138166  -2.27465679   0.07499376
7  -0.33328696   0.29308439  -1.69285367
8   0.23366842   0.23843342   0.81551733
9  -0.39147373  -0.91625212   0.34213384
10  0.02346723  -0.18371169   1.34624911
11 -0.88525152  -1.58919170  -1.79642822
12 -0.58824620   1.01577620   0.97343742
13 -0.11139240   0.34465454  -0.57030662
14  0.01699374   1.36414048   1.12037818
15  1.02739093   0.43833995   0.35741454
16 -0.05210225   -0.89179920 -0.53029706
17  0.11993986  -0.93023225   1.58035136
18  0.88157577  -0.68255508  -0.23090706
19  1.72864721   0.61535225   1.11270514
20  1.09912321   0.47399401  -0.22800965

要按行计算`df1`所有列的和,请将以下代码添加到上面的代码片段中:

x1<-rnorm(20)
x2<-rnorm(20)
x3<-rnorm(20)
df1<-data.frame(x1,x2,x3)
df1$Total<-rowSums(df1[,c("x1","x2","x3")])
df1

输出

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

        x1           x2          x3         Total
1  -0.71576837   1.93636693   0.03572217   1.25632074
2   0.10588952  -0.18761810  -0.51570157  -0.59743015
3   0.71766454  -0.48477796  -0.45083675  -0.21795017
4  -0.51649822  -0.04961815  -0.50535820  -1.07147457
5  -0.14545158  0.40937268    1.46923050   1.73315160
6   0.89138166  -2.27465679   0.07499376  -1.30828137
7  -0.33328696   0.29308439  -1.69285367  -1.73305624
8   0.23366842   0.23843342   0.81551733   1.28761916
9  -0.39147373  -0.91625212   0.34213384  -0.96559201
10  0.02346723  -0.18371169   1.34624911   1.18600466
11 -0.88525152  -1.58919170  -1.79642822  -4.27087145
12 -0.58824620   1.01577620   0.97343742   1.40096742
13 -0.11139240   0.34465454  -0.57030662  -0.33704449
14  0.01699374   1.36414048   1.12037818   2.50151240
15  1.02739093   0.43833995   0.35741454   1.82314543
16 -0.05210225  -0.89179920  -0.53029706  -1.47419851
17  0.11993986  -0.93023225   1.58035136   0.77005896
18  0.88157577  -0.68255508  -0.23090706  -0.03188636
19  1.72864721   0.61535225   1.11270514   3.45670459
20  1.09912321   0.47399401  -0.22800965   1.34510757

示例2

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

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

创建以下数据框:

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

要按行计算`df2`所有列的和,请将以下代码添加到上面的代码片段中:

y1<-rpois(20,1)
y2<-rpois(20,1)
y3<-rpois(20,1)
y4<-rpois(20,1)
df2<-data.frame(y1,y2,y3,y4)
df2$Total_Sum<-rowSums(df2[,c("y1","y2","y3","y4")])
df2

输出

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

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

更新于:2021年11月12日

浏览量:153

启动您的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.