我正在尝试使用dplyr
中的replace()
函数来清洁我的数据。我想在除一个列外的所有列上运行它。如果我在之前使用select()
语句,我会失去我的字符标识符。我正在寻找这样的东西。
newdata<-data %>% replace(((.)>1000),0)
但是有一个例外。
newdata<-data %>% replace(((-StoreID)>1000),0)
由于您没有提供可重现的示例,因此以下是在iris
数据集上的工作原理:
iris %>% mutate_each(funs(replace(., . > 5, NA)), -Species)
mutate_each()
函数来将除Species
列以外的所有列中大于5的值替换为NA
。
对于您的示例,可能是这样的:
data %>% mutate_each(funs(replace(., . > 1000, 0)), -StoreID)
mutate_each
在dplyr
版本0.7.0中已被弃用。
以下是使用across
的更新答案:
iris %>% mutate(across(-Species, ~replace(., . > 5, NA)))
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