基于变量的转置/重塑但略有不同

0 投票
3 回答
508 浏览
提问于 2025-04-18 15:25

我有一个表格,我想根据一些变量来转置它。虽然我知道怎么根据一个变量来转置,但用这种方式做我就不太清楚了。请问在SAS、Python或R中可以做到吗?

我的输入表格如下

输入

我想要的输出看起来是这样的

输出

3 个回答

1

PROC TABULATE 是一种非常简单的方法来做到这一点...

http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a000146759.htm

大概是这样的...

proc tabulate data=mydata ;
  class APPLICATION MONTH_YEAR ;
  var TOTAL_: ;
  table APPLICATION, MONTH_YEAR ;
run ; 
2

这是一个R语言的解决方案

如果你的数据看起来像这样

dat <- data.frame(App = c(2,3), time = c("Sept", "Jan"),
                  Total  = c(2,1777),
                  total_one = c(1, 1521),
                  total_two = c(1, 256))

dat
#     App time Total total_one total_two
#  1   2 Sept     2         1         1
#  2   3  Jan  1777      1521       256

你可以把它reshape(重塑)成wide(宽格式)

reshape(dat, idvar = "App" , timevar="time" , direction="wide")


#    App Total.Sept total_one.Sept total_two.Sept Total.Jan total_one.Jan total_two.Jan
# 1   2          2              1              1        NA            NA            NA
# 2   3         NA             NA             NA      1777          1521           256

想了解更多细节,可以查看?reshape

1

你可以很简单地用 proc report 来做到这一点。可以从这段代码开始,然后根据你的需求进行样式上的修改。

proc report data=have nowd;
  columns application month_year,(total_number_applications tota_applications_one total_applications_two);
  define application/group;
  define month_year/across;
run;

撰写回答