使用dplyr替换选择列上的值

4

我正在尝试使用dplyr中的replace()函数来清洁我的数据。我想在除一个列外的所有列上运行它。如果我在之前使用select()语句,我会失去我的字符标识符。我正在寻找这样的东西。

newdata<-data %>% replace(((.)>1000),0)

但是有一个例外。
newdata<-data %>% replace(((-StoreID)>1000),0)
2个回答

12

由于您没有提供可重现的示例,因此以下是在iris数据集上的工作原理:

iris %>% mutate_each(funs(replace(., . > 5, NA)), -Species)

我们使用mutate_each()函数来将除Species列以外的所有列中大于5的值替换为NA

对于您的示例,可能是这样的:

data %>% mutate_each(funs(replace(., . > 1000, 0)), -StoreID)

纯属好奇,如何使用类似的东西来代替 replace 而不是 replace_na? - Courvoisier
如果我只想在一列上运行这个程序怎么办?data %>% mutate_each(funs(replace(., . > 1000, 0)), StoreID) 这段代码可以吗? - kRazzy R
能否使用修改后的.vars参数来使用mutate_at?类似这样:iris %>% mutate_at(.tbl=., .vars=names(.), funs(replace(., . > 5, NA))),其中从names(.)中减去了Species - 有人能想到一种方法吗? - Agile Bean

1

mutate_eachdplyr版本0.7.0中已被弃用。 以下是使用across的更新答案:

iris %>% mutate(across(-Species, ~replace(., . > 5, NA)))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接