如果 NA 存在于 R 数据框中,如何找到行总和?

如果 R 数据框中存在 NA,要查找行总和,我们可以使用 rowSums 函数并将na.rm参数设置为 TRUE,此参数将在计算行总和之前删除 NA 值。

例如,如果我们有一个名为 df 的数据框,其中包含一些 NA 值,那么我们可以使用以下命令找到行总和 -

df$Row_Sums<-rowSums(df,na.rm=TRUE)

示例 1

以下代码段创建了一个示例数据框 -

x1<-sample(c(NA,2,5),20,replace=TRUE)
x2<-sample(c(NA,2,5),20,replace=TRUE)
x3<-sample(c(NA,2,5),20,replace=TRUE)
df1<-data.frame(x1,x2,x3)
df1

创建了以下数据框

   x1 x2 x3
1   2 NA  5
2  NA  2  2
3   2  5 NA
4  NA  5  2
5  NA NA  2
6   5 NA NA
7   5  2  5
8   2 NA NA
9   2 NA  2
10  5  5  5
11 NA  5  2
12 NA NA NA
13  5  2  5
14  2  2  2
15 NA NA  2
16  5  2 NA
17  5 NA  5
18 NA NA  2
19 NA NA NA
20  5  5 NA

要通过忽略上面创建的数据框中的 NA 值来查找 df1 中每一行的行总和,请将以下代码添加到上面的代码段中 -

x1<-sample(c(NA,2,5),20,replace=TRUE)
x2<-sample(c(NA,2,5),20,replace=TRUE)
x3<-sample(c(NA,2,5),20,replace=TRUE)
df1<-data.frame(x1,x2,x3)
df1$Row_Sums<-rowSums(df1,na.rm=TRUE)
df1
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

  x1  x2 x3 Row_Sums
1  2  NA  5   7
2 NA   2  2   4
3  2   5 NA   7
4 NA   5  2   7
5 NA  NA  2   2
6  5  NA NA   5
7  5   2  5  12
8  2  NA NA   2
9  2  NA  2   4
10 5   5  5  15
11 NA  5  2   7
12 NA NA NA   0
13  5  2  5  12
14  2  2  2   6
15 NA NA  2   2
16  5  2 NA   7
17  5 NA  5  10
18 NA NA  2   2
19 NA NA NA   0
20  5  5 NA  10

示例 2

以下代码段创建了一个示例数据框 -

y1<-sample(c(NA,round(rnorm(3),2)),20,replace=TRUE)
y2<-sample(c(NA,round(rnorm(3),2)),20,replace=TRUE)
y3<-sample(c(NA,round(rnorm(3),2)),20,replace=TRUE)
df2<-data.frame(y1,y2,y3)
df2

创建了以下数据框

      y1    y2    y3
1  -0.27    NA    NA
2  -0.27    NA -0.70
3  -0.33    NA -0.06
4  -0.27 -1.35 -0.09
5   0.23 -2.03 -0.09
6     NA -2.03 -0.70
7  -0.27    NA    NA
8  -0.27 -2.03 -0.09
9  -0.27    NA -0.06
10 -0.33    NA -0.70
11 -0.27    NA -0.70
12    NA    NA    NA
13 -0.33    NA    NA
14    NA -1.35 -0.70
15    NA -0.93 -0.06
16  0.23 -1.35 -0.06
17  0.23 -0.93 -0.06
18 -0.27 -0.93 -0.06
19 -0.33    NA -0.06
20    NA -0.93 -0.09

要通过忽略上面创建的数据框中的 NA 值来查找 df2 中每一行的行总和,请将以下代码添加到上面的代码段中 -

y1<-sample(c(NA,round(rnorm(3),2)),20,replace=TRUE)
y2<-sample(c(NA,round(rnorm(3),2)),20,replace=TRUE)
y3<-sample(c(NA,round(rnorm(3),2)),20,replace=TRUE)
df2<-data.frame(y1,y2,y3)
df2$Row_Sums<-rowSums(df2,na.rm=TRUE)
df2
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

        y1    y2    y3 Row_Sums
1    -0.27    NA    NA -0.27
2    -0.27    NA -0.70 -0.97
3    -0.33    NA -0.06 -0.39
4    -0.27 -1.35 -0.09 -1.71
5     0.23 -2.03 -0.09 -1.89
6       NA -2.03 -0.70 -2.73
7    -0.27    NA    NA -0.27
8    -0.27 -2.03 -0.09 -2.39
9    -0.27    NA -0.06 -0.33
10   -0.33    NA -0.70 -1.03
11   -0.27    NA -0.70 -0.97
12      NA    NA    NA  0.00
13   -0.33    NA    NA -0.33
14      NA -1.35 -0.70 -2.05
15      NA -0.93 -0.06 -0.99
16    0.23 -1.35 -0.06 -1.18
17    0.23 -0.93 -0.06 -0.76
18   -0.27 -0.93 -0.06 -1.26
19   -0.33    NA -0.06 -0.39
20      NA -0.93 -0.09 -1.02