【发布时间】:2018-05-15 01:23:22
【问题描述】:
我将以下数据存储在列表中。我随后对 df1 和 df2 中的每一列进行排序,以找到每列前 5 个值的份额:
set.seed(12345)
df1 = data.frame(replicate(10,sample(0:500,1000,rep=TRUE)))
df2 = data.frame(replicate(10,sample(0:500,1000,rep=TRUE)))
list = list(df1, df2)
do.call(cbind,lapply(list, function(x) {
x1 <- x/colSums(x)[col(x)]
sapply(x1, function(y) sum(head(sort(y, decreasing = TRUE), 5)))}))
如何调整此代码以查找每一列的值计数从最大到最小排序以达到列总数的 80%(即,如果一列占 80.1%,那么该列的答案是 3)?
非常感谢!
【问题讨论】:
-
我认为
set.seed = 12345没有做你认为它正在做的事情。 (请参阅?set.seed。)为了证明,请尝试两次set.seed=12345;runif(1);。 (底线:set.seed(12345)。) -
nymuffin,下面的答案能解决你的问题吗?