如何在 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
广告