【发布时间】:2016-03-01 19:43:58
【问题描述】:
我想根据两列(即开始年份和结束年份)来重塑数据,就像面板数据一样。通过重塑,我可以根据两个唯一的 id 列进行融化,但这有点棘手。我想根据差异纵向扩展它并添加一个名为 change 的列(表示第一年为 1,否则为 0)。有什么建议吗?
这是df的格式。
A <- c("xyz", "xyz", "x","x","x", "y")
start <- c("2001", "1999", "2001", "2000", "1998", "2001")
end <- c("2002", "2001", "2002", "2001", "2000", "2001")
df<- data.frame(A, start,end)
我想最终数据如下
A year change
xyz 2001 1
xyz 2002 0
xyz 1999 1
xyz 2000 0
x 2001 1
x 2002 0
x 2000 1
x 2001 0
x 1998 1
x 1999 0
x 2000 0
y 2001 1
【问题讨论】:
-
'library(reshape2) melt(df,id=c("A"))'
-
我尝试了库 splitstackshape 根据差异进行扩展
-
你可以试试
data.frame(A = rep(df[, 1], each = 2), year = c(t(df[-1])), change = 1:0) -
@DavidArenburg 我认为这与预期的输出不匹配,因为只有 1 行
y和x必须覆盖year 1999