从数据框中计算频率

原始数据框

V1        V2 V3
1  3 reference A2
2  6 reference A2
3  9 reference A2
4  3 reference A2
5 12 reference A2
6  1 reference A2
>

统计频率与频数

#频数
table(referenceA2)
#频率
prop.table(table(referenceA2))

对一定范围内数据进行截取

将21行之后的内容进行合并

colSums(tmp[(21:dim(tmp)[1]),][4]))
# 将合并后的内容整理成新的一行
c(tmp[21,][1],tmp[21,][2],tmp[21,][3],colSums(tmp[(21:dim(tmp)[1]),][4]))
#合并数据框
tmp=rbind(tmp[-(21:dim(tmp)[1]),],c(tmp[21,][1],tmp[21,][2],tmp[21,][3],colSums(tmp[(21:dim(tmp)[1]),][4])))

filter函数中使用正则表达

封装好的函数

##对数据进行分组,并且计算每组内数据出现的频率
mergeFrequent <- function(dataframe, column) {
  library(dplyr)
  rank <- seq(0, 1, 0.2) #分成0.0 0.2 0.4 0.6 0.8 1.0 六组
  frequent <- rep(0, times = c(length(rank)))
  for (index in seq(2, length(rank), 1)) {
    frequent[index] <- dim(filter(dataframe,column > rank[index - 1] & column <= rank[index]))[1] / dim(dataframe)[1] ##计算频率
  }
  return(as.data.frame(matrix(c(rank, frequent), nrow = length(rank)))) #返回作图的数据框
}
##运行
mergeFrequent(data, data$V2)

Last updated