如何使用R在数据帧的行中查找前n%的记录

时间:2016-11-24 21:39:44

标签: r row percentile

我正在运行以下循环:

for(i in 1:l) {
  r = volume[i,]     
  r = as.numeric(r)    
  sr = sort(r)    
  new_df = rbind(new_df, sr)
}

现在,在对每一行进行排序后,我希望将每行中前30%的记录保存在单独的数据框中,并将30%的记录保存在单独的数据框中。由于存在NA值,每次运行循环时记录的数量可能会有所不同。我该怎么做?

1 个答案:

答案 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])
}