R合并数据/扩展数据集

R合并数据/扩展数据集,r,merge,expand,R,Merge,Expand,我试图用R扩展我的数据集。我记录了每个样本的观察值,并根据这些观察值计算了百分比。现在我需要展开每个样本,列出每个可能的观测值,而不做任何计算。myData的示例: 起始数据集: Sample Observation Percent A Y 50 A N 50 B Y 10 B N 80 B Don't

我试图用R扩展我的数据集。我记录了每个样本的观察值,并根据这些观察值计算了百分比。现在我需要展开每个样本,列出每个可能的观测值,而不做任何计算。myData的示例: 起始数据集:

Sample    Observation    Percent
A         Y              50
A         N              50
B         Y              10
B         N              80
B         Don't know     10 
Sample    Observation    Percent
A         Y              50
A         N              50
A         Don't know     NA
B         Y              10
B         N              80
B         Don't know     10 
所需数据集:

Sample    Observation    Percent
A         Y              50
A         N              50
B         Y              10
B         N              80
B         Don't know     10 
Sample    Observation    Percent
A         Y              50
A         N              50
A         Don't know     NA
B         Y              10
B         N              80
B         Don't know     10 
所以在本例中,我需要扩展所有样本A,以包括“不知道”类别,并用“NA”填充

我试过了

myTable <- table(myData)
TableFrame2 <- data.frame(myTable)

myTable一种方法是将组合合并/连接回数据中。(我稍微修改了数据,以便于复制/粘贴到此处。)

Tidyverse:

library(dplyr)
library(tidyr)

dat %>%
  full_join(
    crossing(Sample = unique(dat$Sample), Observation = unique(dat$Observation)),
    by = c("Sample", "Observation")
  )
#   Sample Observation Percent
# 1      A           Y      50
# 2      A           N      50
# 3      B           Y      10
# 4      B           N      80
# 5      B  Don_t_know      10
# 6      A  Don_t_know      NA
甚至

dat %>%
  full_join(expand(., Sample, Observation))
# Joining, by = c("Sample", "Observation")
#   Sample Observation Percent
# 1      A           Y      50
# 2      A           N      50
# 3      B           Y      10
# 4      B           N      80
# 5      B  Don_t_know      10
# 6      A  Don_t_know      NA