r-如何在数据帧中组合/合并两列,并创建一个指定数据点原点的新列



我有一个类似的数据帧

x1 <- c(1,2,3)
x2 <- c(5,6,7)
df <- data.frame(x1,x2)

我想将这两列x1和x2合并为一列,其中包含所有值。此外,我想创建一个新列,说明我的数据点来自这两列中的哪一列。我想要的输出如下:

x <- c(1,2,3,4,5,6)
orig <- c("x1","x1","x1","x2","x2","x2")
df_merged <- data.frame(x,orig)

我搜索了很多列的合并、组合和分组,但显然这不是这个过程的名称。感谢您提前提供的帮助。

您可以在tidyr中使用整形函数pivot_longer

library(tidyr)
pivot_longer(df, cols = everything())
#  name  value
#  <chr> <dbl>
#1 x1        1
#2 x2        5
#3 x1        2
#4 x2        6
#5 x1        3
#6 x2        7

data.table:中的melt

library(data.table)
melt(setDT(df))

尝试stack

> stack(df)
values ind
1      1  x1
2      2  x1
3      3  x1
4      5  x2
5      6  x2
6      7  x2

使用base R

data.frame(name = rep(names(df), each = nrow(df)), value = unlist(df))

或使用gather

library(tidyr)
gather(df)

最新更新