簡體   English   中英

用 r 中的預定義值替換最小值和最大值

[英]Replace min and max values with predefined values in r

我想用預定義的最小值和最大值替換列中的最小值和最大值。

這是一個示例數據集:

ids <- c(1,2,3,4,5,6,7,8,9,10)
scores.a <- c(512,531,541,555,562,565,570,572,573,588)

data <- data.frame(ids, scores.a)

min <- 520
max <- 595

> data
   ids scores.a
1    1      512
2    2      531
3    3      541
4    4      555
5    5      562
6    6      565
7    7      570
8    8      572
9    9      573
10  10      588

所以,我需要用 520 替換 512,用 595 替換 588。

The desired output is:
    > data
       ids scores.a
    1    1      520
    2    2      531
    3    3      541
    4    4      555
    5    5      562
    6    6      565
    7    7      570
    8    8      572
    9    9      573
    10  10      595

有任何想法嗎?

謝謝!

我們用rangereplace創建一個邏輯條件(假設min/max沒有關系

datas$scores.a <- with(data, replace(scores.a, scores.a %in% 
                range(scores.a), c(min, max)))

如果有ties ,一個選項是case_when

library(dplyr)
data %>%
   mutate(scores.a = case_when(scores.a == min(scores.a) ~ min,
                 scores.a == max(scores.a) ~ max,
                 TRUE ~ scores.a))

-輸出

#   ids scores.a
#1    1      520
#2    2      531
#3    3      541
#4    4      555
#5    5      562
#6    6      565
#7    7      570
#8    8      572
#9    9      573
#10  10      595

注意:最好為 object 使用不同的名稱而不是 function 名稱( minmax

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM