如何提取列变量的值并设置为新列?

时间:2019-07-17 17:44:46

标签: r dplyr

所以我有下表:

Name, id, year, sumofloss
a,    11,  2001,  1
a,    11,  2002,  2
a,    11,  2003,  3
a,    11,  2004,  4
b,    12,  2001,  5
b,    12,  2002,  6
b,    12,  2003,  7
b,    12,  2004,  8

因此,假设我有两个帐户,分别称为a和b,并且每个帐户分别具有2001、2002、2003、2004年的亏损编号。现在,我想操纵该表并获得一个如下表: >

Name, id,  2001, 2002, 2003, 2004
a,    11,   1,    2,   3,     4
b,    12,   5,    6,   7,     8

因此,新表将把每个年份的值作为新列,并且每个列的值都是前一个sumofloss列,就像提取年份值作为新列一样。

我尝试了group_by,但是发现仅通过一个函数很难将year的值提取为列,但是我应该使用逐行的year值手动设置新列吗?如果我有10年或更长时间,那将是非常困难的。有没有一种方法可以使表转换更容易?

1 个答案:

答案 0 :(得分:0)

假设df为数据框,则可以执行以下操作:

library(tidyverse)
df %>%
  spread("year", "sumofloss")