如何按数据框中的行对多列求和?

问题描述

如何对每行的列 (C1.dn + C2.dn + V1.dn + V2.dn) 求和并将其显示为同一数据框中的新列?

例如,第 1 行的总和 (9.659531 + 5.159067 + 9.220461 + 13.48245) 应显示为新列 (37.52)。

下面提供了我的数据片段。

 C1.dn     C2.dn    V1.dn    V2.dn
1   9.659531  5.159067 9.220461 13.48245
2  13.482264 15.033321 5.249731 15.39126
3  14.986702  8.004261 8.190506 12.43744
4  16.130656 16.455435 7.469901 11.58376
5  11.597134  8.422198 5.798567 12.34388
6  14.337659 15.216855 5.883851 10.27983
7  11.403534  7.947642 7.051602 16.54026
8  20.604107 14.437914 5.023191 12.63318
9  11.324600  7.044436 6.866096 13.99970

谢谢。

解决方法

dat <- read.table(text = " C1.dn     C2.dn    V1.dn    V2.dn
1   9.659531  5.159067 9.220461 13.48245
2  13.482264 15.033321 5.249731 15.39126
3  14.986702  8.004261 8.190506 12.43744
4  16.130656 16.455435 7.469901 11.58376
5  11.597134  8.422198 5.798567 12.34388
6  14.337659 15.216855 5.883851 10.27983
7  11.403534  7.947642 7.051602 16.54026
8  20.604107 14.437914 5.023191 12.63318
9  11.324600  7.044436 6.866096 13.99970",header = T)


dat
dat$newcol <- rowSums(dat)

> dat
      C1.dn     C2.dn    V1.dn    V2.dn   newcol
1  9.659531  5.159067 9.220461 13.48245 37.52151
2 13.482264 15.033321 5.249731 15.39126 49.15658
3 14.986702  8.004261 8.190506 12.43744 43.61891
4 16.130656 16.455435 7.469901 11.58376 51.63975
5 11.597134  8.422198 5.798567 12.34388 38.16178
6 14.337659 15.216855 5.883851 10.27983 45.71820
7 11.403534  7.947642 7.051602 16.54026 42.94304
8 20.604107 14.437914 5.023191 12.63318 52.69839
9 11.324600  7.044436 6.866096 13.99970 39.23483

如您的评论中所述,如果数据包含非数字列,您可以执行以下操作

iris$newcol <- apply(iris,1,FUN = function(x)sum(as.numeric(x),na.rm = T))

> head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species newcol
1          5.1         3.5          1.4         0.2  setosa   10.2
2          4.9         3.0          1.4         0.2  setosa    9.5
3          4.7         3.2          1.3         0.2  setosa    9.4
4          4.6         3.1          1.5         0.2  setosa    9.4
5          5.0         3.6          1.4         0.2  setosa   10.2
6          5.4         3.9          1.7         0.4  setosa   11.4