【发布时间】:2021-01-25 21:27:53
【问题描述】:
我有一个数据集,其中包含每个母婴“二元组”的 id。我想创建一个只使用来自婴儿变量的数据的新变量。使用 dplyr::filter 函数很简单。但是,使用过滤器意味着丢失了母数据。有没有办法过滤,然后变异,同时仍然保留所有数据?
例子:
require(tidyverse)
dataSet <- data.frame(dyad_id = c(1,1,1,1,2,2,2,2,3,3,3,3),
dyad = c("Mom","Mom","Inf","Inf","Mom","Mom","Inf","Inf","Mom","Mom","Inf","Inf"),
timepoint = c(1,2,1,2,1,2,1,2,1,2,1,2),
v1 = c(3,4,5,2,4,6,3,67,8,4,3,2),
v2 = c(6,8,3,4,5,6,1,3,4,5,6,7))
dataSet <- dataSet %>%
dplyr::filter(dyad == "Inf") %>%
dplyr::mutate(v3 = v1 + v2)
当我运行它时,它会从数据集中删除所有母体数据:
> dataSet
dyad_id dyad timepoint v1 v2 v3
1 1 Inf 1 5 3 8
2 1 Inf 2 2 4 6
3 2 Inf 1 3 1 4
4 2 Inf 2 67 3 70
5 3 Inf 1 3 6 9
6 3 Inf 2 2 7 9
期望的输出:
dyad_id dyad timepoint v1 v2 v3
1 1 Mom 1 3 6 NA
2 1 Mom 2 4 8 NA
3 1 Inf 1 5 3 8
4 1 Inf 2 2 4 6
5 2 Mom 1 4 5 NA
6 2 Mom 2 6 6 NA
7 2 Inf 1 3 1 4
8 2 Inf 2 67 3 70
9 3 Mom 1 8 4 NA
10 3 Mom 2 4 5 NA
11 3 Inf 1 3 6 9
12 3 Inf 2 2 7 9
提前致谢!
【问题讨论】: