我正在运行以下循环:
for(i in 1:l) {
r = volume[i,]
r = as.numeric(r)
sr = sort(r)
new_df = rbind(new_df, sr)
}
现在,在对每一行进行排序后,我希望将每行中前30%的记录保存在单独的数据框中,并将30%的记录保存在单独的数据框中。由于存在NA值,每次运行循环时记录的数量可能会有所不同。我该怎么做?
答案 0 :(得分:0)
您可能会遇到以下情况:
l=nrow(volume)
new_df=data.frame()
for(i in 1:l) { #i=1
r = volume[i,]
r = as.numeric(r)
sr = sort(r,na.last = TRUE)
new_df = rbind(new_df, sr)
}
# Number rec
nr = rowSums(!is.na(new_df))
upp=data.frame(matrix(NA,ncol=l,nrow=round(max(nr)*.3)))
for( i in 1:l){
nc=round(nr[i]*.3)
upp[1:nc,i]=t(new_df[i,1:nc])
}
low=data.frame(matrix(NA,ncol=l,nrow=round(max(nr)*.3)))
for( i in 1:l){
nc=round(nr[i]*.3)
low[1:nc,i]=t(sort(new_df[i,],decreasing = TRUE)[1:nc])
}