我以前使用mutate_all函数 indplyr来替换数据框中的值。我正在尝试更新我的代码以适应新的跨功能,但我不确定如何更新它以便它可以执行替换功能。
下面是一个示例数据集。
df$A <- c(10,0,0,0,0,0,12,12,0,14,-99,14,-99,-99,16,16)
df$B <- c(10,0,0,0,12,12,12,12,0,14,-99,14,16,16,16,16)
df$C <- c(10,12,14,16,10,12,14,16,10,12,14,16,10,12,14,16)
A B C
10 10 10
0 0 12
0 0 14
0 0 16
0 12 10
0 12 12
12 12 14
12 12 16
0 0 10
14 14 12
-99 -99 14
14 14 16
-99 16 10
-99 16 12
16 16 14
16 16 16
Run Code Online (Sandbox Code Playgroud)
我之前用来替换某个值(在本例中为 -99)的代码如下,并且成功运行。
df %>% mutate_all(funs(replace(., .== -99, "Removed")))
A B C
10 10 10
0 0 12
0 0 14
0 0 16
0 12 10
0 12 12
12 12 14
12 12 16
0 0 10
14 14 12
Removed Removed 14
14 14 16
Removed 16 10
Removed 16 12
16 16 14
16 16 16
Run Code Online (Sandbox Code Playgroud)
下面是我尝试实现该across函数的方式everything(这用我想要的替换值替换了数据框中的所有单元格;而不仅仅是 -99 的实例)。
df %>% mutate(across(everything(), replace, -99 , "Removed"))
Run Code Online (Sandbox Code Playgroud)
用 :
library(dplyr)
df %>% mutate(across(everything(), ~replace(., . == -99 , "Removed")))
Run Code Online (Sandbox Code Playgroud)
的.cols参数across是默认的,everything()所以这也能工作。
df %>% mutate(across(.fns = ~replace(., . == -99 , "Removed")))
Run Code Online (Sandbox Code Playgroud)
但是,最简单的是:
df[df == -99] <- 'Removed'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1540 次 |
| 最近记录: |