2017-08-22 46 views
1

我想知道是否可以在R中使用通配符函數來替換數據框中的特定值?R用於更改數值的潛在通配符

所以,如果我有c(10.32, 10.34, 10.35, 10.45, 10.56)價值觀,我想一個函數,將與XX.X5替換所有值XX.X4(即10.45 -> 10.4410.35 -> 10.34)。

是否有一個替代功能,將爲此工作?

回答

0

我不確定你的意思是通配符。如果您只想從數據框中縮放一列(即從中減去一個常數),那麼在R的向量化特性下是很容易的。

df$x <- df$x - .01 

來自dplyr的mutate函數也可以。 如果你只是想擴大一些行,那麼ifelse功能也非常好用:

df$x <- ifelse(df$x<11 && df$x>10, df$x-.01, df$x) 
0

這裏有一個想法,

n <- nchar(x/5) == 4 
x[n] <- x[n] - 0.01 
x 
#[1] 10.34 10.44 10.56 
2

您可以使用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) 
+0

這正是我一直在尋找 - 非常感謝! – AndrewVBA

+1

@AndrewVBA請閱讀[當某人回答我的問題時該怎麼辦?](https://stackoverflow.com/help/someone-answers) – Masoud