【发布时间】:2019-05-17 18:17:42
【问题描述】:
我有两组不同的变量:年百分比和年。年百分比从 1999 年开始到 2012 年结束,但年份从 1999 年开始到 2013 年。
countrylabel annualpercentageshare.1999 year1990 year1991 year1992
1 Austria NA NA NA NA
2 Belgium NA NA NA NA
3 Bulgaria 48.20000 NA NA NA
4 Estonia NA NA NA NA
5 France 47.52853 NA NA NA
6 Germany NA NA NA NA
类似的东西。
我已经尝试过这段代码:
merge_data2 <- reshape(merge_data2, varying = list(2:ncol(merge_data2)),
v.names = c("percentageshare", "Year"),
idvar = "countrylabel", direction = "long", times = 1990:2013)
但我收到此错误消息:
“reshapeLong 中的错误(数据,idvar = idvar,timevar = timevar,varying = varying,: 'lengths(variing)' 必须全部匹配 'length(times)'"
编辑:我想要这样的数据框:
countrylabel time annualpercentageshare year
Austria 1990 NA NA
Austria 1991 NA NA
【问题讨论】:
-
几乎就是
reshape2::melt(merge_data2, id = "countrylabel")。如果您需要填写缺失的年份,那是第二步。 -
或者,
dplyr:gather(merge_data2, -countrylabel, key = metric, value = Value) -
@Mako212:它不起作用。它给了我三个变量:countrylabel、variable 和 value,“variable”只包含“annualpercentageshare.1999”直到“annualpercentageshare.2012”
-
@Rainroad 它还应该包含所有“年份”列的行。
-
@Mako212:对不起,我想我的问题不够清楚。我刚刚编辑了我的问题以显示我想要的数据框格式。