2017-11-17 51 views
0

创建新列我确信这已在某个地方得到解答,但我一直尝试不同的方法,整天都没有成功。以下是我的大型数据框的一部分。按组(“合法”),我想总计3列,并为每个组的总数创建一个新列。按组,通过总结部分行

我的数据框:

legal y2015 y2016 y2017 
    NE2 0  1  1 
    NE2 0  1  1 
    SW4 1  0  0 
    SW4 1  0  0 

期望的结果:

legal y2015 y2016 y2017 total 
    NE2 0  1  1  2 
    NE2 0  1  1  2 
    SW4 1  0  0  1 
    SW4 1  0  0  1 

我已经通过,ColSums试过,ddply等,并得到了各种各样的错误,往往是我更换具有比更少的行我数据。我正在处理的例子与我试图实现的有所不同。

回答

1

df$total = rowSums(df[,2:4])

我子集化df避免总结字符串。最好使用dplyr::selectsubset指定列,这样可以避免数字索引。

编辑:注意到你说的“按组”,这让我感到困惑,因为你的例子对于每个组都有多行。如果你真的想要

legal y2015 y2016 y2017 total 
    NE2 0  2  2  4 
    SW4 2  0  0  2 

你可以先使用dplyr

df = df %>% group_by(legal) %>% 
summarise(y2015 = sum(y2015), 
      y2016 = sum(y2016), 
      y2017 = sum(y2017)) 

然后在结果使用rowSums