gpt4 book ai didi

r - 将 data.frame 值更改为 %

转载 作者:行者123 更新时间:2023-12-02 02:08:55 25 4
gpt4 key购买 nike

如何将包含 NA 值的 df 值替换为对行总和的贡献百分比?

示例:

# dummy df
a <- c("x","y","z")
b <- c(10,5,2)
c <- c("NA",1,"NA")
d <- c("NA",4,8)

dummy <- data.frame(a,b,c,d)
<表类=“s-表”><标题>一个bc <正文>x10不适用不适用y514z2不适用8

我想要什么:

<表类=“s-表”><标题>一个bc <正文>x100%不适用不适用y50%10%40%z20%不适用80%

最佳答案

首先,最好使用显式 NA,而不是表示“NA”的字符串。

其次,您可以使用 dplyr 的 rowwise()across() 来解决这个问题:

library(scales)
library(dplyr)

# dummy df with explict NAs
a <- c("x","y","z")
b <- c(10,5,2)
c <- c(NA,1, NA)
d <- c(NA, 4,8)
dummy <- data.frame(a,b,c,d)

dummy %>%
# add column of sum by row
rowwise() %>%
mutate(row_sum = sum(c_across(b:d), na.rm = TRUE),
# divide each column by sum of row
across(b:d, ~ percent(.x / row_sum))) %>%
ungroup() %>%
# remove sum column
select(-row_sum)

# A tibble: 3 x 4
# a b c d
# <chr> <chr> <chr> <chr>
# 1 x 100% NA NA
# 2 y 50% 10% 40%
# 3 z 20% NA 80%

关于r - 将 data.frame 值更改为 %,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67987103/

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