所以我有一个混合值的数据帧——它非常混乱。我的值是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的逻辑,但没有ifelse
和lapply
:
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