Если я правильно понимаю, вы начинаете с трех столбцов one
, two
и three
, и я думаю, row
и MAX_row
- это временные переменные, созданные для достижения до four
.
Мы можем получить ожидаемый результат без необходимости создавать эти переменные.
library(dplyr)
df %>%
group_by(one) %>%
mutate(four = three[which.max(two == 2)])
# one two three four
# <fct> <int> <fct> <fct>
#1 a 1 yes yes
#2 a 2 yes yes
#3 a 3 no yes
#4 b 1 yes no
#5 b 2 no no
#6 b 3 no no
Это все еще дает ожидаемый результат без создания row
и MAX_row
.
данные
df <- structure(list(one = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label
= c("a",
"b"), class = "factor"), two = c(1L, 2L, 3L, 1L, 2L, 3L), three =
structure(c(2L,
2L, 1L, 2L, 1L, 1L), .Label = c("no", "yes"), class = "factor")),
row.names = c("1:",
"2:", "3:", "4:", "5:", "6:"), class = "data.frame")