使用此数据:
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
提前谢谢你,
答案 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