将三个变量合并为一个并复制观察结果

Merge three Variables to one and replicate observations

我有一个如下所示的数据框:

B <-  data.frame(
    nr=c(1,2,3,4,5),
    A=c('a','b','c','d','e'),
    B=c("s", "t", "i", "u", "z"),
    B1=c("", "v", "", "", ""),
    B2 =c("", "g", "", "", ""))
B <- B %>% mutate_all(na_if,"")

因为我的 Varaibales B1 和 B2 只有一个值,我想将 B1 和 B2 合并到变量 B。因此它应该创建两个新的观察并复制这个观察的每个其他变量。

它应该如下所示:

B <-  data.frame(
    nr=c(1,2,2, 2, 3,4,5),
    A=c("a","b", "b", "b", "c","d","e"),
    B=c("s", "v", "g", "t", "i", "u", "z"))

感谢您的帮助!!

在 'B' 列上使用 pivot_longer 重塑为 'long' 格式,并使用 values_drop_na = TRUE

删除 NA
library(dplyr)
library(tidyr)
B %>% 
   pivot_longer(cols = starts_with("B"), values_to = "B", 
     values_drop_na = TRUE, names_to = NULL)

-输出

# A tibble: 7 × 3
     nr A     B    
  <dbl> <chr> <chr>
1     1 a     s    
2     2 b     t    
3     2 b     v    
4     2 b     g    
5     3 c     i    
6     4 d     u    
7     5 e     z