我确定已经在某个地方得到了回答,但我一整天都在尝试不同的方法而没有成功。下面是我的大型数据框的一部分。按小组(' legal'),我想总计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等等,并且会遇到各种错误,通常我的替换行数比我的数据少。我工作的例子与我想要实现的有点不同。
答案 0 :(得分:1)
df$total = rowSums(df[,2:4])
我对df
进行子集化以避免对字符串求和。最好使用dplyr::select
或subset
来指定列,这样就可以避免使用数字索引。
编辑:注意到你说"按组",这让我感到困惑,因为你的例子每组都有多行。如果你真的想要
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