2017-10-07 77 views
0

我想创建一个新列,该列将是现有列中只有正值的总和。因此,在列TotalImportSE3我想获得的SE3-NO1,SE3-DK1,SE3-FI,SE3,SE4唯一的正值,列的总和,如果其中没有人是积极的总和应为0满足条件时数据帧的总和列

 SE3 - NO1 SE3 - DK1 SE3 - FI SE3 - SE2 SE3 - SE4 TotalImportSE3 
47  1114  666  -225  2716  -3784    NA 
48  1009  671  -151  1491  -2943    NA 
54  1057  711 -1062  1658  -2201    NA 
55  1077  711 -1213  3492  -3015    NA 
94  772  414  -501  2904  -2262    NA 
95  -786  -314  -407  -2368  -2005    NA 

输出应该是这样的:

 SE3 - NO1 SE3 - DK1 SE3 - FI SE3 - SE2 SE3 - SE4 TotalImportSE3 
47  1114  666  -225  2716  -3784    4496 
48  1009  671  -151  1491  -2943    3171 
54  1057  711 -1062  1658  -2201    3426 
55  1077  711 -1213  3492  -3015    5280 
94  772  414  -501  2904  -2262    4090 
95  -786  -314  -407  -2368  -2005    0 

到目前为止,我的努力:

df1 <- df$`SE3 - NO1`[which(Data$`SE3 - NO1`>0)] 
df2 <- df$`SE3 - DK1`[which(Data$`SE3 - DK1`>0)] 

但它确实创造两种不同长度的两个载体,所以它完全搅乱。

+0

的名字你尝试过这么远吗? – shea

+0

我试图使用sum和哪个函数,但到目前为止,我设法提取单独列的正值,然后对它们进行求和,而不是同时对所有列进行求和。 – MikeMEiL

+0

你应该编辑你的问题以反映这些信息。该网站旨在帮助他人,当你看起来没有做出任何努力时,人们不太愿意提供帮助。 – shea

回答

3

你可以试试这个:

df$TotalImportSE3=rowSums(df*(df>0)) 
  • df是你的数据框
+0

完美的作品!但是,我不太了解*符号是如何工作的,它是否仅仅为数据帧仅汇总正数据帧值的条件?那些可以是多个条件? – MikeMEiL

+0

对于正数条件,df> 0返回TRUE和FALSE(大于零的数据框对象变为TRUE且小于零变为FALSE)...然后通过乘以df返回正数 –