【发布时间】:2019-11-01 17:50:14
【问题描述】:
我有一个数据集df:
df <- tibble(
id = sort(rep(letters[1:3], 3)),
visit_id = rep(c(0, 5, 10), 3),
true_visit = c(NA, 3, NA, 0, 5, 10, 1, 7, NA)
)
> df
# A tibble: 9 x 3
id visit_id true_visit
<chr> <dbl> <dbl>
1 a 0 NA
2 a 5 3
3 a 10 NA
4 b 0 0
5 b 5 5
6 b 10 10
7 c 0 1
8 c 5 7
9 c 10 NA
我正在尝试创建一个新列 closest_visit,在该列中我发现每个人中最接近 visit_id 的 true_visit。结果如下所示:
# A tibble: 9 x 4
id visit_id true_visit closest_visit
<chr> <dbl> <dbl> <dbl>
1 a 0 NA 3
2 a 5 3 3
3 a 10 NA 3
4 b 0 0 0
5 b 5 5 5
6 b 10 10 10
7 c 0 1 1
8 c 5 7 7
9 c 10 NA 7
澄清一下,closest_visit 是个人 a 的 3,因为它是唯一的 true_visit。 closest_visit 是第七行的 1,因为 0(该行的 visit_id)比 7(该参与者的 true_visits)更接近 1,依此类推。
【问题讨论】:
-
为什么第七行的
closest_visit是1?另外,为什么每个id b有 3 个closest_visit值? -
rep(letters[1:3], each = 3)避免使用sort。 -
@tmfmnk 为第七行(id
c),abs(0 - c(1,7)) = c(1, 7),其中最小的是1,对应true_visit == 1。对于idb,他们的每一次真实访问都匹配一个不同的访问ID,比如abs(5 - c(0,5,10)) = c(5, 0, 5),最小的是0,对应true_visit == 5。这有意义/回答你的问题吗? -
并非如此。不是要为每个 ID 找到一个最接近的值吗?还有,为什么第九排是7?
-
第 9 行有 7,因为 10(该行的访问 id)比 1(该个人的真实访问)更接近 7
标签: r