如果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
广告