如果R数据框中存在缺失值,如何求每n个值的和?


要在R数据框列中查找每n个值的和(如果存在缺失值),我们可以使用rowsum函数以及rep函数(它将为行重复求和)和na.rm=TRUE(排除包含缺失值的行)。例如,如果我们有一个名为df的数据框,包含4列,每列包含20个值,其中一些值缺失,那么我们可以使用命令rowsum(df,rep(1:5,each=4),na.rm=TRUE)来查找每5行的行和。

示例

 在线演示

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

输出

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

如果数据框中存在缺失值,则查找df1中每5行的列和:

示例

rowsum(df1,rep(1:5,each=4),na.rm=TRUE)

输出

   x1   x2
1  13   34
2  13    7
3  14   10
4  13   10
5   9   14

示例

 在线演示

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

输出

       y1           y2         y3
1   0.9563337   -1.1412663    0.1873961
2   2.4693175    0.5661012    0.1873961
3    NA           0.5661012   NA
4   2.4693175    NA           0.4860115
5  NA            NA           NA
6   0.9563337    NA           NA
7   0.9563337   -1.1412663   0.1873961
8   2.4693175   -1.1412663    NA
9   0.9563337    NA           0.1873961
10  2.4693175    0.5661012    0.4860115
11 NA            NA           0.4860115
12 NA           -1.1412663    0.1873961
13 NA           -1.1412663    NA
14 NA            NA           0.1873961
15  0.9563337   -1.1412663   0.4860115
16  0.9563337   -1.1412663   0.1873961
17 NA            NA          0.4860115
18  0.9563337   -1.1412663   NA
19  0.9563337   -1.1412663   NA
20  2.4693175    0.5661012   0.4860115

如果数据框中存在缺失值,则查找df2中每5行的列和:

示例

rowsum(df2,rep(1:5,each=4),na.rm=TRUE)

输出

     y1           y2          y3
1  5.894969  -0.009063996  0.8608037
2  4.381985  -2.282532593  0.1873961
3  3.425651  -0.575165146  1.3468152
4  1.912667  -3.423798889  0.8608037
5  4.381985  -1.716431443  0.9720230

更新于:2021年3月17日

618 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告