r语言 - 如果数据帧中的每个值大于某个数字,如何将该值除以某个数字



所以我有一个混合值的数据帧——它非常混乱。我的值是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

使用此示例数据帧

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)))

类似于@MrFlick的逻辑,但没有ifelselapply:

df/c(10, 100)[(df > 10)+1]
#  col_1 col_2 col_3
#1  0.40  0.16  0.18
#2  0.20  0.90  0.20
#3  0.89  0.30  0.74
#4  0.23  0.80  0.34

最新更新