% d-6ren">
gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 22:04:18 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com