df <- data.frame("ref" = c("A","A","B","B","C","C","C"),
"trans" = c("R","MTA","N","MTA","MTA","MTA","MTA"))
ref trans
1 A R
2 A MTA
3 B N
4 B MTA
5 C MTA
6 C MTA
7 C MTA
我想创建一个新列,为每个引用选择值“ R”或“ N”,并为每一行重复该值。如果不存在值“ R”或“ N”,则该列到处都应该简单地具有值“ N”。
我尝试过这样的事情:
df %>% group_by (ref,trans) %>% arrange(desc(ref), desc(trans)) %>% mutate(result = trans[1L])
但不起作用。 (请注意,分组依据是必填项,因为我的数据集更精细)。
结果应该是
ref trans result
1 A R R
2 A MTA R
3 B N N
4 B MTA N
5 C MTA N
6 C MTA N
7 C MTA N
最好使用dplyr解决方案
答案 0 :(得分:2)
在case_when
中使用mutate
将适用于您提供的示例。尽管有ref
和"R"
的{{1}}没有?
"N"
答案 1 :(得分:1)
可以尝试:
library(dplyr)
df %>%
group_by(ref) %>%
mutate(result = c('N', 'R')[any(trans == 'R') + 1])
输出:
# A tibble: 7 x 3
# Groups: ref [3]
ref trans result
<fct> <fct> <chr>
1 A R R
2 A MTA R
3 B N N
4 B MTA N
5 C MTA N
6 C MTA N
7 C MTA N