R 填写从一个时间点(中间一个)到较早和较晚时间点的缺失值 id

R 填写从一个时间点(中间一个)到较早和较晚时间点的缺失值 id,r,R,使用fill()尝试这种tidyverse方法: 使用fill()尝试这种tidyverse方法: 使用ave id code time 1 1 abcd11 baseline 2 2 abcd11 baseline 3 3 abcd11 baseline 4 4 abcd11 baseline 5 5 abcd11 baseline 6 1 abcd11 screening 7 2 abcd11 screening 8 3 abcd

使用
fill()
尝试这种
tidyverse
方法:


使用
fill()
尝试这种
tidyverse
方法:


使用
ave

   id   code      time
1   1 abcd11  baseline
2   2 abcd11  baseline
3   3 abcd11  baseline
4   4 abcd11  baseline
5   5 abcd11  baseline
6   1 abcd11 screening
7   2 abcd11 screening
8   3 abcd11 screening
9   4 abcd11 screening
10  5 abcd11 screening
11  1 abcd11        3M
12  2 abcd11        3M
13  3 abcd11        3M
14  4 abcd11        3M
15  5 abcd11        3M
16  1 abcd11        6M
17  2 abcd11        6M
18  3 abcd11        6M
19  4 abcd11        6M
20  5 abcd11        6M

my.df使用
ave

   id   code      time
1   1 abcd11  baseline
2   2 abcd11  baseline
3   3 abcd11  baseline
4   4 abcd11  baseline
5   5 abcd11  baseline
6   1 abcd11 screening
7   2 abcd11 screening
8   3 abcd11 screening
9   4 abcd11 screening
10  5 abcd11 screening
11  1 abcd11        3M
12  2 abcd11        3M
13  3 abcd11        3M
14  4 abcd11        3M
15  5 abcd11        3M
16  1 abcd11        6M
17  2 abcd11        6M
18  3 abcd11        6M
19  4 abcd11        6M
20  5 abcd11        6M

my.df谢谢!不幸的是,它在实际数据集中无法正常工作。例如,参与者3的代码在最后一个时间点填入参与者4。我想这可能与每个参与者有不同的时间点有关?@snetlogo尝试添加真实数据样本,以便正确理解问题!您可以对该操作使用
dput()
,并将输出粘贴到问题中@snetlogo尝试为每个id添加
group\u by()
语句,如果没有真实数据,我无法提供正确的解决方案!好的,谢谢!我在真实数据集中使用了group_by(id),然后在您的新数据中再次使用了dput(如上更改)@snetlogo如何填充值?谢谢!不幸的是,它在实际数据集中无法正常工作。例如,参与者3的代码在最后一个时间点填入参与者4。我想这可能与每个参与者有不同的时间点有关?@snetlogo尝试添加真实数据样本,以便正确理解问题!您可以对该操作使用
dput()
,并将输出粘贴到问题中@snetlogo尝试为每个id添加
group\u by()
语句,如果没有真实数据,我无法提供正确的解决方案!好的,谢谢!我在真实数据集中使用了group_by(id),然后在新数据中再次使用了dput(如上更改)@snetlogo如何填充值?
   id   code      time
1   1 abcd11  baseline
2   2 abcd11  baseline
3   3 abcd11  baseline
4   4 abcd11  baseline
5   5 abcd11  baseline
6   1 abcd11 screening
7   2 abcd11 screening
8   3 abcd11 screening
9   4 abcd11 screening
10  5 abcd11 screening
11  1 abcd11        3M
12  2 abcd11        3M
13  3 abcd11        3M
14  4 abcd11        3M
15  5 abcd11        3M
16  1 abcd11        6M
17  2 abcd11        6M
18  3 abcd11        6M
19  4 abcd11        6M
20  5 abcd11        6M
my.df <- transform(my.df, code=ave(code, id, FUN=function(x)
  rep(unique(na.omit(x)), length(x))))
my.df
#    id                     time     code
# 1   3           baseline_arm_1 1bmbf816
# 2   3                log_arm_1 1bmbf816
# 3   3        prebaseline_arm_1 1bmbf816
# 4   3          screening_arm_1 1bmbf816
# 5   3 v2a_follow_up__tel_arm_1 1bmbf816
# 6   3 v2b_follow_up__pro_arm_1 1bmbf816
# 7   3  v2c_follow_up__wb_arm_1 1bmbf816
# 8   3 v3a_follow_up__tel_arm_1 1bmbf816
# 9   3 v4a_follow_up__tel_arm_1 1bmbf816
# 10  3 v5a_follow_up__tel_arm_1 1bmbf816
# 11  3  v5c_follow_up__wb_arm_1 1bmbf816
# 12  4           baseline_arm_1 1jqrc869
# 13  4                log_arm_1 1jqrc869
# 14  4        prebaseline_arm_1 1jqrc869
# 15  4          screening_arm_1 1jqrc869
# 16  4 v2a_follow_up__tel_arm_1 1jqrc869
# 17  4 v2b_follow_up__pro_arm_1 1jqrc869
# 18  7           baseline_arm_1 1wxyz123
# 19  7                log_arm_1 1wxyz123
# 20  7        prebaseline_arm_1 1wxyz123
# 21  7          screening_arm_1 1wxyz123
my.df <- structure(list(id = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 4L, 4L, 4L, 4L, 4L, 4L, 7L, 7L, 7L, 7L), time = c("baseline_arm_1", 
"log_arm_1", "prebaseline_arm_1", "screening_arm_1", "v2a_follow_up__tel_arm_1", 
"v2b_follow_up__pro_arm_1", "v2c_follow_up__wb_arm_1", "v3a_follow_up__tel_arm_1", 
"v4a_follow_up__tel_arm_1", "v5a_follow_up__tel_arm_1", "v5c_follow_up__wb_arm_1", 
"baseline_arm_1", "log_arm_1", "prebaseline_arm_1", "screening_arm_1", 
"v2a_follow_up__tel_arm_1", "v2b_follow_up__pro_arm_1", "baseline_arm_1", 
"log_arm_1", "prebaseline_arm_1", "screening_arm_1"), code = c(NA, 
NA, NA, "1bmbf816", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "1jqrc869", 
NA, NA, NA, NA, NA, "1wxyz123")), row.names = c("1", "2", "3", 
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", 
"16", "17", "18", "19", "20", "21"), class = "data.frame")