首页 > 解决方案 > 如果数据帧中的每个值大于某个数字,如何将其除以某个数字

问题描述

所以我有一个混合值的数据框——它非常混乱。我有超过 10 分的值和 100 分的值。我想将它们标准化为百分比。

我的逻辑是,如果某个值大于 10,那么我可以除以 100。如果某个值等于或小于 10,我会将这些值除以 10。

当前帧

col_1     col_2     col_3
 40        16        18
 2          9        20
 89         3        7.4
 23         8        34

新框架

col_1     col_2     col_3
 .40        .16      .18
 .20        .90      .20
 .89        .30      .74
 .23        .80      .34

标签: rdataframe

解决方案


使用此示例数据框

dd <- read.table(text="
col_1     col_2     col_3
40        16        18
2          9        20
89         3        7.4
23         8        34", header=T)

您可以在基础 R 中使用

myscale <- function(x) ifelse(x>10, x/100, x/10)
data.frame(lapply(dd, myscale))

或者如果你更喜欢 dplyr

dd %>% 
  mutate(across(everything(), ~if_else(.x>10, .x/100, .x/10)))

推荐阅读