我有一个数据框df
> df<-data.frame(a=letters[1:5], b=1:5, c=LETTERS[1:5])
> df
a b c
1 a 1 A
2 b 2 B
3 c 3 C
4 d 4 D
5 e 5 E
我想从上面的数据框创建一个新的数据框,只有列应该是这样的
> df1
a
1 a
2 1
3 A
4 b
5 2
6 B
7 c
8 3
9 C
.....
我尝试了以下
> df1<-data.frame(c(df[1,],df[2,],df[3,]))
> df1
a b c a.1 b.1 c.1 a.2 b.2 c.2
1 a 1 A b 2 B c 3 C
但结果是行矩阵,实际上我有数百个列和行应该转换为一列。我该怎么办?
答案 0 :(得分:5)
> data.frame(a = matrix(apply(df, 1, c), ncol = 1))
## a
## 1 a
## 2 1
## 3 A
## 4 b
## 5 2
## 6 B
## 7 c
## 8 3
## 9 C
## 10 d
## 11 4
## 12 D
## 13 e
## 14 5
## 15 E
以下是另外两个选项,
> data.frame(a = do.call(rbind, as.list(t(df))))
## or
> data.frame(a = c(apply(df, 1, c)))
as.vector
和as.matrix
也可以代替上面c
来电中的apply
。