如何解决如何按数据框中的行对多列求和?
如何对每行的列 (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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。