我想将dataframe df1转换为df2,如下所示:
df1 <- read.table(textConnection("
id date ret
1101 19900104 6.5867
1102 19900105 6.5383
1103 19900106 6.6043
1101 19900105 3.6943
1102 19900106 3.6368
1103 19900107 1.2740
1104 19900107 3.8572
1101 19900106 2.2525
1102 19900107 1.1253
1101 19900107 2.2331
"),header=T)
df2 <- read.table(textConnection("
date 1101 1102 1103 1104
19900104 6.5867 NA NA NA
19900105 3.6943 6.5383 NA NA
19900106 2.2525 3.6368 6.6043 NA
19900107 2.2331 1.1253 1.2740 3.8572
"),header=T)
我尝试使用循环,但我不认为这是一个很好的解决方案,如果我有非常大的数据,涵盖了从1990年到2012年的一天。非常感谢任何可以帮助我的人…
发布于 2013-06-21 03:26:13
这是从长到宽的格式。reshape2
是处理这类问题的一个很好的包。要从长到宽,您需要使用dcast()
。您为它提供了要使用的对象(df1
),然后是一个公式,该公式基本上指示了在~
的左侧用什么来索引行,在右侧用什么来索引列。
library(reshape2)
df2 <- dcast(df1, date ~ id)
df2
# date 1101 1102 1103 1104
# 1 19900104 6.5867 NA NA NA
# 2 19900105 3.6943 6.5383 NA NA
# 3 19900106 2.2525 3.6368 6.6043 NA
# 4 19900107 2.2331 1.1253 1.2740 3.8572
https://stackoverflow.com/questions/17227002
复制