r - 如何改变过滤后的行(使用 dplyr 或 if/else)

标签 r dplyr

肯定有人问过类似的问题,但我的问题要简单得多,不幸的是,我真的无法从他们那里剖析答案,所以这是我的具体情况,可能是简单的情况:

df <- data.frame("Sample" = 1:30,
                    "Individual" = c("a", "b", "c"),
                    "Repeat" = 1:3)

我想将 Individual == "a"的条目突变为 "a_(number_of_repeat)。但仅适用于 a,不适用于 b 或 c。

我试过:

df[df$Individual == "a", ] <- 
df %>% filter(Individual == "a") %>%
df %>% mutate(Individual = paste0(Individual,"_",Repeat))

但没有成功。也许它也可以通过 if/else 或 for argument 来解决?

df$Individual <- for (df$Individual == "a") {
df %>% mutate(Individual = paste0(Individual,"_",Repeat))
}

...也是一个失败。

最佳答案

像这样的东西,用 mutate 和经典的 ifelse 怎么样:

  library(dplyr)
  df %>% mutate(Individual = ifelse(Individual=="a",
                                   paste0(Individual,'_',Repeat),
                                   Individual))
  Sample Individual Repeat
1       1        a_1      1
2       2          2      2
3       3          3      3
4       4        a_1      1
5       5          2      2
6       6          3      3
7       7        a_1      1
8       8          2      2
9       9          3      3
10     10        a_1      1
11     11          2      2
12     12          3      3
13     13        a_1      1
14     14          2      2
15     15          3      3
16     16        a_1      1
17     17          2      2
18     18          3      3
19     19        a_1      1
20     20          2      2
21     21          3      3
22     22        a_1      1
23     23          2      2
24     24          3      3
25     25        a_1      1
26     26          2      2
27     27          3      3
28     28        a_1      1
29     29          2      2
30     30          3      3

或者在新的专栏中:

df %>% mutate(Individual_2 = ifelse(Individual=="a",
                                    paste0(Individual,'_',Repeat),
                                    Individual))

关于r - 如何改变过滤后的行(使用 dplyr 或 if/else),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52720655/

相关文章:

r - 如何显示第一列满足最大条件、第二列满足最小条件的行?

c++ - 当算法放置在循环内部时,它会产生不同的结果,C++

r - 从所有条件中选择至少具有两个条件的行

r - 使用 dplyr 进行复杂滞后继承

python - 将 python 与 knitr 一起使用

r - 了解 R 中的 `scale`

r - 将 select_helpers 与 dplyr::coalesce 一起使用

R dplyr 或 purrr group_by 到向量列表

r - 如何将函数应用于每个组

记录前后级别的重新编码摘要/概述