gpt4 book ai didi

r - 在非零列中查找百分比

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

我在 R 中有以下数据框

    ID     IT      FMCG     CDGS
A 0 20 50
B 10 30 67
C 23 0 40

我想要非零列的百分比份额并在新列中打印。例如快速消费品 (20/(20+50)) 28%

所需的 R 数据帧
   ID      IT     FMCG    CDGS         Perc_Portfolio
A 0 20 50 FMCG(28%),CDGS(72%)
B 10 30 67 IT(10%),FMCG(28%),CDGS(62%)
C 23 0 40 IT(36%),CDGS(64%)

等等,我使用以下代码打印非零列名
simplyfy2array(apply(df[2:4],1,function(x)paste(names(df[2:4])[x!=0],collapse="")))

如何在上面的代码中添加百分比?

最佳答案

我们可以使用 applyMARGIN = 1循环遍历行,对不为 0 的元素进行子集,除以 sum元素创建百分比和pastenames

df1$perc <- apply(df1[-1], 1, FUN = function(x) {
x1 <- x[x!=0]
if(length(x1)==0) {
""} else {

x2 <- round(100*x1/sum(x1))
paste0(paste(names(x2), paste0(x2, "%"), sep="(", collapse="), "), ")")}})
df1$perc
#[1] "FMCG(29%), CDGS(71%)" "IT(9%), FMCG(28%), CDGS(63%)" "IT(37%), CDGS(63%)"

关于r - 在非零列中查找百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43676938/

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