将其他值组合的正值和负值相加

时间:2017-02-14 11:59:42

标签: r group-by aggregate

使用此数据:

 Respon    Type     Value
   Mark     -1        2
   Mark     -2        4
   Sheyla    1        10
   Ana       1        4
   Sheyla    2        3
   Mark      1        4
   Ana      -2        6
   Ana       2        7

我想得到两个名为“positive”和“negative”的列,它们根据类型对正面和负面值进行求和,并按响应分组

Respon    Positive     Negative
 Mark         4           6
 Sheyla       13          0
 Ana          11          6           

提前谢谢你,

2 个答案:

答案 0 :(得分:1)

我们可以使用

library(dplyr)
df1 %>% 
    group_by(Respon)  %>% 
    summarise(Positive = sum(Value[Type>0]), Negative = sum(Value[Type <0]))
# A tibble: 3 × 3
#  Respon Positive Negative
#   <chr>    <int>    <int>
#1    Ana       11        6
#2   Mark        4        6
#3 Sheyla       13        0

或使用data.table

library(data.table)
dcast(setDT(df1), Respon ~ sign(Type), value.var = "Value", sum)

答案 1 :(得分:0)

使用基数R xtabs,我们可以对Value上的Respon进行分组并对Type变量进行分组。

xtabs(Value~Respon + sign(Type), df)

#       sign(Type)
#  Respon   -1  1
#  Ana       6 11
#  Mark      6  4
#  Sheyla    0 13