选定的列到新行

Fel*_*yes 6 r dplyr

我试图将列拆分为新行,保留前两列的数据。

d1 <- data.frame(a=c(100,0,78),b=c(0,137,117),c.1=c(111,17,91), d.1=c(99,66,22), c.2=c(11,33,44), d.2=c(000,001,002))

d1
    a   b c.1 d.1 c.2 d.2
1 100   0 111  99  11   0
2   0 137  17  66  33   1
3  78 117  91  22  44   2
Run Code Online (Sandbox Code Playgroud)

预期结果是:

    a   b  c    d
1 100   0  111  99
2 100   0  11   0
3   0 137  17   66  
4   0 137  33   1
5  78 117  91   22  
6  78 117  44   2
Run Code Online (Sandbox Code Playgroud)

使用 dplyr 多次尝试,但在 sees 中不是正确的方法。

Jas*_*lns 6

如果你想留在dplyr/tidyverse,你需要tidyr::pivot_longer一个特别的参考.value- 请参阅枢轴小插图以了解更多信息:

library(tidyverse)
d1 <- data.frame(
  a = c(100, 0, 78),
  b = c(0, 137, 117),
  c.1 = c(111, 17, 91),
  d.1 = c(99, 66, 22),
  c.2 = c(11, 33, 44),
  d.2 = c(000, 001, 002)
)

d1 %>% 
  pivot_longer(
    cols = contains("."),
    names_to = c(".value", "group"),
    names_sep = "\\."
  )
#> # A tibble: 6 x 5
#>       a     b group     c     d
#>   <dbl> <dbl> <chr> <dbl> <dbl>
#> 1   100     0 1       111    99
#> 2   100     0 2        11     0
#> 3     0   137 1        17    66
#> 4     0   137 2        33     1
#> 5    78   117 1        91    22
#> 6    78   117 2        44     2
Run Code Online (Sandbox Code Playgroud)

reprex 包(v0.3.0)于 2020 年 5 月 11 日创建


Duc*_*uck 1

这可以解决您的问题:

#Try this
a1 <- d1[,c(1:4)]
a2 <- d1[,c(1,2,5,6)]
names(a1) <- names(a2) <- c('a','b','c','d')
DF <- rbind(a1,a2)
Run Code Online (Sandbox Code Playgroud)