如果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 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告