【发布时间】:2014-03-10 20:39:05
【问题描述】:
我正面临数据框的重塑问题。它有更多的行和列。简化后,它的结构如下:
rownames year x1 x2 x3
a 2000 2 6 11
b 2000 0 4 2
c 2000 0 3 5
a 2010 2 6 11
b 2010 0 0 0
c 2020 4 1 8
a 2020 10 1 7
b 2020 8 4 10
c 2020 22 1 16
我想提供一个数据框,其中只有一行用于变量“year”,复制后续列中的 x1、x2、x3 值,并使用行名和 x- 之间的组合重命名列多变的。它应该是这样的:
year a_x1 a_x2 a_x3 b_x1 b_x2 b_x3 c_x1 c_x2 c_x3
2000 2 6 11 0 4 2 0 3 5
2010 2 6 11 0 0 0 4 1 8
2020 10 1 7 8 4 10 22 1 16
我想使用后续的 cbind() 函数,但由于我必须为数千行和数百列执行此操作,我希望 reshape 包有更直接的方法(我还不太熟悉)
提前致谢!
【问题讨论】:
-
请使用
dput(sample_data),以便用户可以将他们的建议应用于您正在查看的相同数据。 -
你想如何处理重复值?还是我应该根据您的示例输出假设这是一个错误?
-
@HansRoggeman 在这种情况下它是 100% 可重现的:
dt <- read.table( text="...", , header = TRUE ),只需将...替换为复制的文本。
标签: r reshape reshape2 melt cbind