如何在 R 数据框中排除一列后找到行和?
假设我们在 R 数据框中有一个数值列,由于某些特性(例如与其余数据的相似性或区别),我们不想将其包含在我们的分析中,那么我们可能希望从分析中排除该列。一种这样的情况是在排除一列后查找行和。为此,我们可以使用以下步骤:
- 首先,创建一个数据框。
- 借助 dplyr 包的 mutate 函数和 base R 中的 setdiff 函数查找行和
创建数据框
让我们创建一个如下所示的数据框:
x1<-round(rnorm(20),2) x2<-round(rnorm(20),2) x3<-round(rnorm(20),2) df<-data.frame(x1,x2,x3) df
执行上述脚本后,会生成以下输出(由于随机化,此输出会在您的系统上有所不同):
x1 x2 x3 1 0.67 0.63 -0.12 2 -0.41 0.36 -1.14 3 0.73 0.85 0.29 4 -3.14 0.16 0.65 5 -0.07 0.76 0.07 6 -0.05 -0.26 -2.03 7 -1.61 0.36 0.88 8 -1.48 -0.90 1.10 9 - 2.27 -2.92 -0.06 10 -0.78 -1.89 -0.10 11 -0.06 -1.30 -1.43 12 -0.15 -0.57 0.40 13 0.31 -0.46 -0.46 14 -0.40 -0.16 -1.06 15 -0.07 -1.62 -0.23 16 0.29 0.00 0.29 17 -0.61 0.53 1.67 18 0.86 -0.54 -1.40 19 0.85 0.17 -0.37 20 0.61 -1.46 0.27
查找行和
使用 dplyr 包的 mutate 函数和 setdiff 函数排除 x3 列查找行和:
x1<-round(rnorm(20),2) x2<-round(rnorm(20),2) x3<-round(rnorm(20),2) df<-data.frame(x1,x2,x3) library(dplyr) df %>% mutate(RowSum=rowSums(.[setdiff(names(.),"x3")]))
输出
x1 x2 x3 RowSum 1 0.67 0.63 -0.12 1.30 2 -0.41 0.36 -1.14 -0.05 3 0.73 0.85 0.29 1.58 4 -3.14 0.16 0.65 -2.98 5 -0.07 0.76 0.07 0.69 6 -0.05 -0.26 -2.03 -0.31 7 -1.61 0.36 0.88 -1.25 8 -1.48 -0.90 1.10 -2.38 9 -2.27 -2.92 -0.06 -5.19 10 -0.78 -1.89 -0.10 -2.67 11 -0.06 -1.30 -1.43 -1.36 12 -0.15 -0.57 0.40 -0.72 13 0.31 -0.46 -0.46 -0.15 14 -0.40 -0.16 -1.06 -0.56 15 -0.07 -1.62 -0.23 -1.69 16 0.29 0.00 0.29 0.29 17 -0.61 0.53 1.67 -0.08 18 0.86 -0.54 -1.40 0.32 19 0.85 0.17 -0.37 1.02 20 0.61 -1.46 0.27 -0.85
广告