如何使用R转换以下数据帧

use*_*475 2 r

我使用R来生成过去6个月的统计报告.我得到了如下所述的要求:

输入数据框架:

 FY_Qtr       region     Lic_type    revenue
 2009 Q1         AP       NCV       126.67
 2010 Q1         NA       NCV       395.80
 2011 Q1         LA       NCV       469.10
 2012 Q1         EMEA     MR        173.85
 2013 Q1         JAPAN    MR        140.24
Run Code Online (Sandbox Code Playgroud)

预期数据:

  FY_Qtr       AP.NCV   NA.NCV   LA.NCV   EMEA.MR JAPAN.MR
 2009 Q1       126.67   -           -       -       -
 2010 Q1        -       395.80      -       -       -
 2011 Q1        -       -           469.10  -       -
 2012 Q1        -       -           -       173.85  -
 2013 Q1        -       -           -       -       140.24
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我获得预期的数据吗?

Din*_*nre 6

这正是为'reshape2'包构建的任务类型.

设置:让我们加载样本数据.

data <- read.table(text="
     FY_Qtr       region     Lic_type    revenue
     '2009 Q1'         'AP'       NCV       126.67
     '2010 Q1'         'NA'       NCV       395.80
     '2011 Q1'         'LA'       NCV       469.10
     '2012 Q1'         'EMEA'     MR        173.85
     '2013 Q1'         'JAPAN'    MR        140.24
    ", header=TRUE)
Run Code Online (Sandbox Code Playgroud)

投射数据:基本上你现在所拥有的被视为"融化"数据.对于每组变量组合和指定的值,您都有ID列,其中包含单独的行.这意味着你可以跳过通常的'reshape2'步骤,首先融化数据并直接跳转到铸造,如下所示:

library(reshape2)

dcast(data, FY_Qtr ~ region + Lic_type, value.var='revenue')

#    FY_Qtr AP_NCV EMEA_MR JAPAN_MR LA_NCV NA_NCV
# 1 2009 Q1 126.67      NA       NA     NA     NA
# 2 2010 Q1     NA      NA       NA     NA  395.8
# 3 2011 Q1     NA      NA       NA  469.1     NA
# 4 2012 Q1     NA  173.85       NA     NA     NA
# 5 2013 Q1     NA      NA   140.24     NA     NA
Run Code Online (Sandbox Code Playgroud)

我们正在使用'dcast'功能,因为我们想要输出数据帧.然后,我们将您的融化数据指定为输入.下一部分解释了如何关联数据,指定ID(FY_Qtr)的'〜'等式的左侧和指定要使用的列变量组合的'〜'的右侧.然后'value.var'参数指定(作为字符串)要用作值的变量.