更新时间:2023-11-18 23:01:22
在complete
中获取SF
的max
值并使用seq
而不是 full_seq
因为
Get max
value of SF
in complete
and use seq
instead of full_seq
because
full_seq(2:4, 1) #gives
#[1] 2 3 4
#whereas
seq(max(2:4)) #gives
#[1] 1 2 3 4
那就试试吧
library(dplyr)
library(tidyr)
DF1 %>%
group_by(ID) %>%
mutate(SF= pmax(X_F, Y_F, na.rm = T)) %>%
complete(SF = seq(max(SF)))
# ID SF X_F X_A Y_F Y_A
# <fct> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 A 1 NA NA NA NA
# 2 A 2 1 0.1 2 0.2
# 3 A 3 2 0.2 3 0.3
# 4 A 4 4 0.4 NA NA
# 5 A 5 3 0.3 5 0.4
# 6 A 6 NA NA NA NA
# 7 A 7 5 0.5 7 0.7
# 8 B 1 NA NA 1 0.1
# 9 B 2 NA NA NA NA
#10 B 3 NA NA 3 0.2
#11 B 4 NA NA 4 0.7
#12 C 1 1 0.2 1 0.1
#13 C 2 2 0.3 NA NA
#14 C 3 3 0.4 3 0.3
#15 C 4 4 0.5 4 0.4
#16 C 5 5 0.6 5 0.5
要使用 full_seq
获得预期输出,您可以在向量中添加 1
To get your expected output with full_seq
you could add 1 in the vector
DF1 %>%
group_by(ID) %>%
mutate(SF= pmax(X_F, Y_F, na.rm = T)) %>%
complete(SF = full_seq(c(1, SF), 1))