gpt4 book ai didi

r - 如何根据它们对 R 中所有列的总和的贡献来删除数据框中的列

转载 作者:行者123 更新时间:2023-12-04 12:12:11 24 4
gpt4 key购买 nike

我正在尝试根据它们对所有列总和的贡献从我的数据框中删除列。

下面是一个 1x5 数据帧的示例(我想也可以以类似的方式从 5x1 数据帧中删除行,然后转置它)。假设值总和为 100。

df <- data.frame(V1 = 5, V2 = 10, V3 = 20, V4 = 40, V5 = 25)

V1 V2 V3 V4 V5

5 10 20 40 25

我现在想保留贡献最大的列,例如至少占所有列总和的 80%。

所以我想要实现的是:

V3    V4    V5  

20 40 25

有没有优雅的方法来做到这一点?

提前致谢!

最佳答案

可以采取许多可能的方法。基础 R 中的一种方法是 unlist 数据,sort 以降序排列并获取值比率的累积总和。当它达到阈值 (0.8) 时停止并选择所有列直到达到该阈值。

vals <- cumsum(prop.table(sort(unlist(df), decreasing = TRUE))) > 0.8
df[names(vals[1:which.max(vals)])]

# V4 V5 V3
#1 40 25 20

关于r - 如何根据它们对 R 中所有列的总和的贡献来删除数据框中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59196225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com