我需要对我的真实 df 使用 lapply/sapply 或其他递归方法来计算每列/变量中有多少重复值。
这里我用一个小例子来重现我的案例:
library(dplyr)
df <- data.frame(
var1 = c(1,2,3,4,5,6,7,8,9,10 ),
var2 = c(1,1,2,3,4,5,6,7,9,10 ),
var3 = c(1,1,1,2,3,4,5,6,7,8 ),
var4 = c(2,2,1,1,2,1,1,2,1,2 ),
var5 = c(1,1,1,1,1,4,5,5,6,7 ),
var6 = c(4,4,4,5,5,5,5,5,5,5 )
)
我r nrow(df)
在我的数据集中,现在我需要获取每列的重复值的百分比。假设我的 realdf
有很多列,我需要递归地做。我尝试使用lapply/sapply
,但它没有工作...
# create function that is used in lapply
perc_repeated <- function(variables){
paste(round((sum(table(df$variables)-1) / nrow(df))*100,2),"%")
}
perce_repeated_values <- lapply(df, perc_repeated)
perce_repeated_values
如果我的数据框的列数增加到 700 左右,对每列使用一些递归函数并在数据框中从最大到最小有序地获取结果,如何以最佳方式执行此操作?(例如,对于达到 0% 的变量具有 100% 重复值的变量),例如:
df_repeated
variable perc_repeated_values
var6 80%
var4 80%
var5 50%
var3 20%
var2 20%
var1 0%