R:如何将两列合并为一列(对于记录器列,不是按列合并)

R: How can I merge two column in one (for loger column, not merge by column )

例如,我有这个数据框:

Id Age
1 14
2 28

我想做一个像这样的长专栏:

Id new column
1 1
2 2
14
28

我该怎么办?

我们可以 unlist 数据并根据 max length

通过填充 NA 创建列
lst1 <- list(df1$id, unlist(df1))
out <- data.frame(lapply(lst1, `length<-`, max(lengths(lst1))))
names(out) <- c("id", "new_column")

这是另一种方法:

df1 <- data.frame(New_column = c(df[,"Id"], df[,"Age"]))
merge(df$Id, df1, by="row.names", all=TRUE)[,-1]

输出:

   x New_column
1  1          1
2  2          2
3 NA         14
4 NA         28

dplyr

的方法
library(dplyr)

df %>% 
  mutate(Age = Id) %>% 
  bind_rows(
    df %>% 
      mutate(Id = NA)
  ) %>% 
  rename(new_column = Age)

# A tibble: 4 x 2
     Id new_column
  <int>      <int>
1     1          1
2     2          2
3    NA         14
4    NA         28