如何将R数据帧的列转换为行?

如果将行值错误地记录到列中,那么我们可能希望将列转换成行。因此,要将R数据帧的列转换为行,我们可以使用转置函数t。例如,如果我们有一个包含五列五行的数据帧df,则可以使用as.data.frame(t(df))将df的列转换为行。

示例

set.seed(4)
x1<-rnorm(5,10,2)
x2<-letters[1:5]
x3<-1:5
df1<-data.frame(x1,x2,x3)
df1

输出结果

      x1    x2 x3
1 10.433510 a  1
2 8.915015  b  2
3 11.782289 c  3
4 11.191961 d  4
5 13.271236 e  5

将df1的列转换为行-

示例

df1_new<-as.data.frame(t(df1))
df1_new

输出结果

       V1        V2       V3       V4       V5
x1 10.433510 8.915015 11.782289 11.191961 13.271236
x2      a         b       c         d        e
x3      1         2       3         4        5

示例

a<-sample(0:1,20,replace=TRUE)
b<-sample(0:5,20,replace=TRUE)
c<-sample(1:10,20,replace=TRUE)
d<-sample(6:10,20,replace=TRUE)
df2<-data.frame(a,b,c,d)
df2

输出结果

   a b c d
1  0 3 5 10
2  1 4 9 10
3  1 4 2  9
4  1 5 10 7
5  1 4 4  6
6  1 0 8  6
7  1 5 10 9
8  0 2 2  6
9  1 5 10 9
10 0 4 6  9
11 0 3 10 9
12 0 0 6 10
13 0 3 1 10
14 0 5 4  7
15 1 2 2 10
16 1 4 4 10
17 0 3 3  8
18 0 3 1  7
19 1 5 7  9
20 1 5 7  7

将df2的列转换为行-

示例

df2_new<-as.data.frame(t(df2))
df2_new

输出结果

  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20
a 0   1 1   1 1   1  1  0 1    0   0   0  0   0    1   1   0   0   1 1
b 3   4 4   5 4   0  5  2 5    4   3   0  3   5    2   4   3   3   5 5
c 5   9 2   10 4  8  10 2 10   6   10  6  1   4    2   4   3   1   7 7
d 10  10 9  7  6  6  9  6 9    9   9  10  10  7   10  10   8   7   9 7

示例

y1<-LETTERS[1:20]
y2<-letters[1:20]
y3<-sample(LETTERS[1:4],20,replace=TRUE)
df3<-data.frame(y1,y2,y3)
df3

输出结果

 y1 y2 y3
1  A a A
2  B b A
3  C c D
4  D d C
5  E e C
6  F f B
7  G g A
8  H h C
9  I i B
10 J j A
11 K k A
12 L l C
13 M m C
14 N n A
15 O o A
16 P p C
17 Q q D
18 R r D
19 S s D
20 T t D

将df3的列转换为行-

示例

df3_new<-as.data.frame(t(df3))
df3_new

输出结果

  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20
y1 A B   C D   E F   G  H I   J   K   L    M   N   O   P  Q    R  S   T
y2 a b   c d   e f   g  h i   j   k   l    m   n   o   p  q    r  s   t
y3 A A   D C   C B   A  C B   A   A   C    C   A   A   C  D    D  D   D

示例

z1<-rpois(20,10)
z2<-rpois(20,5)
z3<-rpois(20,8)
z4<-rpois(20,4)
df4<-data.frame(z1,z2,z3,z4)
df4

输出结果

   z1 z2 z3 z4
1  10 11 13 2
2  8  3   9 2
3  6  4  10 3
4 16  6  10 4
5  9  7   5 8
6  4  5   5 3
7  7  4   3 2
8  8  2   9 3
9  12 6   9 4
10 15 7   9 3
11 8  5  10 2
12 20 4   6 4
13  5 4  10 8
14 10 2  8  1
15 20 5  9  3
16  5 5  8  5
17 13 5   8 6
18 7 1   14 3
19 12 2   9 6
20 9 8    11 2

将df4的列转换为行-

示例

df4_new<-as.data.frame(t(df4))
df4_new

输出结果

   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20
z1 10 8   6 16  9 4  7   8 12 15   8   20   5  10 20    5  13  7   12  9
z2 11 3   4 6   7 5  4   2 6  7    5   4    4   2  5    5  5   1   2   8
z3 13 9  10 10  5 5  3   9 9  9    10  6    10  8  9    8  8   14  9   11
z4 2 2    3 4   8 3  2   3 4  3    2   4    8   1  3    5  6   3   6    2