如果 R 数据框中存在缺失值,如何求出每 n 个值的总和?
r programmingserver side programmingprogramming
如果存在缺失值,要求出 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