我想知道是否可以在R中使用通配符函數來替換數據框中的特定值?R用於更改數值的潛在通配符
所以,如果我有c(10.32, 10.34, 10.35, 10.45, 10.56)
價值觀,我想一個函數,將與XX.X5
替換所有值XX.X4
(即10.45 -> 10.44
或10.35 -> 10.34
)。
是否有一個替代功能,將爲此工作?
我想知道是否可以在R中使用通配符函數來替換數據框中的特定值?R用於更改數值的潛在通配符
所以,如果我有c(10.32, 10.34, 10.35, 10.45, 10.56)
價值觀,我想一個函數,將與XX.X5
替換所有值XX.X4
(即10.45 -> 10.44
或10.35 -> 10.34
)。
是否有一個替代功能,將爲此工作?
我不確定你的意思是通配符。如果您只想從數據框中縮放一列(即從中減去一個常數),那麼在R的向量化特性下是很容易的。
df$x <- df$x - .01
來自dplyr的mutate函數也可以。 如果你只是想擴大一些行,那麼ifelse功能也非常好用:
df$x <- ifelse(df$x<11 && df$x>10, df$x-.01, df$x)
這裏有一個想法,
n <- nchar(x/5) == 4
x[n] <- x[n] - 0.01
x
#[1] 10.34 10.44 10.56
您可以使用gsub
:
dat <- as.numeric(gsub("5$", "4", dat))
# [1] 10.32 10.34 10.34 10.44 10.56
更新:
這是不將數據轉換爲字符的另一種解決方案:
dat[round(dat %% 0.1,2) == 0.05] <- dat[round(dat %% 0.1,2) == 0.05] - 0.01
數據:
dat <- c(10.32, 10.34, 10.35, 10.45, 10.56)
這正是我一直在尋找 - 非常感謝! – AndrewVBA
@AndrewVBA請閱讀[當某人回答我的問題時該怎麼辦?](https://stackoverflow.com/help/someone-answers) – Masoud