gpt4 book ai didi

r - 在 R : conditionally dividing numeric values by 1000 中

转载 作者:行者123 更新时间:2023-12-02 16:15:57 24 4
gpt4 key购买 nike

我找到了类似的代码,但没有找到代码应仅适用于数字观察的条件的代码,因此我问这个问题。这是我发现最相似的链接:Divide specific values in a column by 1000

我想将 amount_code == 1 的所有(数据集的)数字观测值除以 1,000,000(一百万),并将 amount_code == 2 的所有(数据集的)数字观测值除以 1,000(一千)。我尝试了下面的代码,但老实说我可能不太对(我对此很陌生):

library(dplyr)
df1 <- df %>% mutate_if(is.numeric, amount_code == 1, ./1000000)

这就是我所拥有的(但实际上更多的是数字变量):

amount_code     value    
1 123456
1 234567
2 123456
2 234567

这就是我想要的:

amount_code    value    
1 0.123456
1 0.234567
2 123.456
2 234.567

非常感谢任何帮助!谢谢:)

最佳答案

我们可以使用case_when 来指定多个条件。 mutate_if 可以替换为 across/where(因为它已被弃用)

library(dplyr)
df1 <- df %>%
mutate(across(c(where(is.numeric), - amount_code),
~ case_when(amount_code == 1~ ./ 1000000,
amount_code == 2 ~ ./1000)))

-输出

df1
# amount_code value
#1 1 0.123456
#2 1 0.234567
#3 2 123.456000
#4 2 234.567000

注意:使用across 假设有多个列要划分

数据

df <- structure(list(amount_code = c(1L, 1L, 2L, 2L), value = c(123456L, 
234567L, 123456L, 234567L)), class = "data.frame", row.names = c(NA,
-4L))

关于r - 在 R : conditionally dividing numeric values by 1000 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66736523/

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