将小于阈值的列替换为0

时间:2018-10-09 17:47:24

标签: r

我有一个包含200列的数据框。我想使用dplyr清除数据,以便将小于0.05的每个数字替换为0。下面粘贴了一个示例df

df
0.07262
0.039885
0.090173
0.124043
0.09201
0.068309
0.146381
0.09127
0.060768
0.111031

这是理想的结果。

df
0.07262
0
0.090173
0.124043
0.09201
0.068309
0.146381
0.09127
0.060768
0.111031

这是我的代码:df2 <- mutate_all(ifelse(<0.05,0.,)),但是它不起作用。欢迎任何指导。

3 个答案:

答案 0 :(得分:3)

这是使用基数R的一种方法

  df[df < 0.05] <- 0

答案 1 :(得分:1)

使用dplyr,您可以先定义函数,然后在mutate_all中调用它

smallToZero <- function(x) {if_else(x<.05, 0, x)}
df2 <- 
  df %>% 
  mutate_all(smallToZero)

您还可以使用将它作为未命名的函数使用。为:

df2 <- 
  df %>% 
  mutate_all(funs(if_else(.<.05, 0, .)))

答案 2 :(得分:1)

dplyr:

df <- mutate_all(df, funs(ifelse(. < 0.5, 0, .)))

基本R:

df[df < 0.05] <- 0