将数据框从列名重新排列为键值对

数据挖掘 r 数据
2021-09-19 03:30:04

如果我在 R 中有这样的数据:

> a = data.frame(a = c(1, 2),
               b = c(3, 4))
> a
  a b
1 1 3
2 2 4

但我想这样:

> b = data.frame(k = c("a", "a", "b", "b"),
+                v = c(1, 2, 3, 4))
> b
  k v
1 a 1
2 a 2
3 b 3
4 b 4

我怎样才能以这种方式转换数据?

2个回答

这是一个简单的gather()使用包tidyr

> library(tidyr)
> 
> gather(a, key = "k", value = "v")
  k v
1 a 1
2 a 2
3 b 3
4 b 4

您也可以使用包中的melt()功能reshape2

> library(reshape2)
> 
> melt(a, variable.name="k", value.name="v")
No id variables; using all as measure variables
  k v
1 a 1
2 a 2
3 b 3
4 b 4

希望这是有见地的!