LDT*_*LDT 1 r dplyr data.table
我正在寻找一种巧妙的方法来用字符替换特定的 NA 值。
\n示例 data.frame 如下所示
\nlibrary(tidyverse)\ndf <- tibble(genes=c("A","B","C"), x=c(NA,NA,4), y=c(NA,3,4))\ndf\n#> # A tibble: 3 \xc3\x97 3\n#> genes x y\n#> <chr> <dbl> <dbl>\n#> 1 A NA NA\n#> 2 B NA 3\n#> 3 C 4 4\nRun Code Online (Sandbox Code Playgroud)\n创建于 2023-03-27,使用reprex v2.0.2
\n我想将x 列中的gene==A替换为. x 列中的其余值应保持不变。我尝试使用和,但出现错误。NA valueYesmutatecase_when()
我希望我的约会看起来像这样
\n#> # A tibble: 3 \xc3\x97 3\n#> genes x y\n#> <chr> <dbl> <dbl>\n#> 1 A Yes NA\n#> 2 B NA 3\n#> 3 C 4 4\n\nRun Code Online (Sandbox Code Playgroud)\n
既然您已经在 中找到了答案dplyr,我将在基础 R 和 中提供解决方案data.table。
基础 R -
df$x[is.na(df$x) & df$genes == "A"] <- "Yes"
Run Code Online (Sandbox Code Playgroud)
data.table需要显式地将列更改为字符,而不是像基本 R 中那样隐式类型转换。
library(data.table)
df$x <- as.character(df$x)
setDT(df)[is.na(x) & genes == "A", x := "Yes"]
df
# genes x y
#1: A Yes NA
#2: B <NA> 3
#3: C 4 4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
536 次 |
| 最近记录: |