gpt4 book ai didi

r - 将data.frame中的列堆叠成R中的一列

转载 作者:行者123 更新时间:2023-12-04 10:01:10 25 4
gpt4 key购买 nike

我在将 data.frame 中的列堆叠成一列时遇到问题。
现在我的数据看起来像这样:

id   time    black   white   red 
a 1 b1 w1 r1
a 2 b2 w2 r2
a 3 b3 w3 r3
b 1 b4 w4 r4
b 2 b5 w5 r5
b 3 b6 w6 r6

我正在尝试转换 data.frame 使其看起来像这样:
id   time  colour 
a 1 b1
a 2 b2
a 3 b3
b 1 b4
b 2 b5
b 3 b6
a 1 w1
a 2 w2
a 3 w3
b 1 w4
b 2 w5
b 3 w6
a 1 r1
a 2 r2
. . .
. . .
. . .

我猜这个问题需要使用 reshape 包,但我不确定如何使用它将多列堆叠在一列下。任何人都可以提供帮助吗?

最佳答案

由于您在标题中提到“堆叠”,您还可以查看stack基础 R 中的函数:

cbind(mydf[1:2], stack(mydf[3:5]))
# id time values ind
# 1 a 1 b1 black
# 2 a 2 b2 black
# 3 a 3 b3 black
# 4 b 1 b4 black
# 5 b 2 b5 black
# 6 b 3 b6 black
# 7 a 1 w1 white
# 8 a 2 w2 white
# 9 a 3 w3 white
# 10 b 1 w4 white
# 11 b 2 w5 white
# 12 b 3 w6 white
# 13 a 1 r1 red
# 14 a 2 r2 red
# 15 a 3 r3 red
# 16 b 1 r4 red
# 17 b 2 r5 red
# 18 b 3 r6 red

如果“黑色”、“白色”和“红色”列中的值为 factor s,您需要将它们转换为 character值(value)观第一。
cbind(mydf[1:2], stack(lapply(mydf[3:5], as.character)))

关于r - 将data.frame中的列堆叠成R中的一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13597091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com