添加不在前 10 个最常见值中的值的百分比列和频率

  • 本文关键字:百分比 频率 常见值 添加 r
  • 更新时间 :
  • 英文 :


以下是在我的数据框中的一个变量中获取前 10 个最常见值的代码。

#Remove NAs
dataL[dataL == "NA"] <- NA
dataS <- na.omit(dataL)
#getting the Top10 frequent values
Y <- dataS$Variable
X <- sort(table(Y), decreasing=TRUE)[1:10]
Z <- data.frame(X)
colnames(Z)= c("Value", "Frequency")

这是它的输出

    Value      Frequency
1   1           635
2   0           296
3   1,000,000   115
4   10,000,000  110
5   20,000,000  104
6   5,000,000   101
7   50,000,000  86
8   25,000,000  85
9   30,000,000  80
10  40,000,000  77

我想在新列上输出一个频率占总数的百分比。并添加一个缺失值频率和不在 top10 中的所有其他值的频率。所以输出应该如下所示。

    Value       Frequency    % of Total
0   Missing     67          0.50%
1   1           635         4.60%
2   0           296         2.10%
3   1,000,000   115         0.80%
4   10,000,000  110         0.80%
5   20,000,000  104         0.70%
6   5,000,000   101         0.70%
7   50,000,000  86          0.60%
8   25,000,000  85          0.60%
9   30,000,000  80          0.60%
10  40,000,000  77          0.60%
11  All other   12,136      87.40%
我相信

这能满足你的要求。
首先,编造一些数据。注意参数useNA = "ifany"在调用table并且我不子集X,我使用整个表。

set.seed(5787)    # Make the results reproducible
p <- runif(100)
Y <- sample(100, 1e4, TRUE, prob = p/sum(p))
Y[sample(100, 10)] <- NA
X <- sort(table(Y, useNA = "ifany"), decreasing=TRUE)
Z <- data.frame(X)
colnames(Z)= c("Value", "Frequency")
Z$Value <- as.character(Z$Value)

现在,只需计算零件并将零件放在一起即可。

Z[['% of Total']] <- 100*Z[["Frequency"]]/sum(Z[["Frequency"]])
Other <-  c("All Other", colSums(Z[-c(1:10, which(is.na(Z$Value))), 2:3]))
Z <- rbind(Z[is.na(Z$Value), ], head(Z, n = 10), Other)
Z$Value[is.na(Z$Value)] <- "Missing"
row.names(Z) <- NULL
Z
#       Value Frequency % of Total
#1    Missing        10        0.1
#2         61       202       2.02
#3         13       200          2
#4         23       197       1.97
#5         55       197       1.97
#6         16       196       1.96
#7         25       189       1.89
#8         48       189       1.89
#9         58       185       1.85
#10        79       183       1.83
#11        54       181       1.81
#12 All Other      8081      80.81

最新更新