2016-11-21 90 views
2

假設我的數據看起來是這樣的(多了很多列)用所有列的NA代替負值?

set.seed(112116) 
df <- data.frame(x1 = sample(c(LETTERS, -1:-10), 100, replace = T), 
       x2 = sample(c(letters, -1:-10), 100, replace = T), 
       x3 = sample(c(1:30, -1:-10), 100, replace = T)) 

我想用NA來替代所有負數。我可以用一個像這樣做的一個:

df <- df %>% mutate(x1 = replace(x1, which(x1<0), NA), 
       x2 = replace(x2, which(x2<0), NA), 
       x3 = replace(x3, which(x3<0), NA)) 

但我希望有我的數據做這行的所有列的方式

回答

4

嘗試用mutate_each

df %>% 
    mutate_each(funs(replace(., .<0, NA))) 
+0

OK你贏了:)嘿嘿 –

+1

@諾比我認爲7秒的差異,對不起 – akrun