以下是示例数据:
long days = ChronoUnit.DAYS.between(d1, d2);
每个组以df <- data.frame(group=rep(1:5,rep(2,5)),value=c(0,-150,0,50,0,-120,0,30,0,-20),flag1=floor(runif(10)),flag2=rep(rbinom(5,1,.5),rep(2,5)),flag3=rep(rbinom(5,1,.5),rep(2,5)))
值开头,每组第二行是终值,可以是0
。
例如第1组:
>0 or 0<
我想找出哪些变量组合group value flag1 flag2 flag3
1 0 0 0 0
1 -150 0 0 0
的结果为负flag1-flag3
,哪些为正。上面的这个例子表明,将所有value
0
置于状态0(第1行)将导致负flag1-flag3
=结果(第2行)。我想获得每组和整体的关联。
答案 0 :(得分:2)
以下面的例子为例。我按flag1-flag3
的所有可能值进行分组,并计算每个组的正值或负值的概率分布。
library(dplyr)
# remove redundant rows:
df <- df %>% filter(value != 0)
# get all combinations of flat1-flag3 by grouping them,
# and then calculate the distribution:
df %>% group_by(flag1, flag2, flag3) %>% summarise(pos = mean(value > 0),
neg = mean(value < 0))
Source: local data frame [4 x 5]
Groups: flag1, flag2 [?]
flag1 flag2 flag3 pos neg
<dbl> <int> <int> <dbl> <dbl>
1 0 0 0 0.0 1.0
2 0 0 1 0.5 0.5
3 0 1 0 1.0 0.0
4 0 1 1 0.0 1.0
如果您更多地寻找回归系数,您可能想要做类似
的事情 lm(value > 0 ~ flag1 + flag2 + flag3, data = df)
但是,我不确定这是你要求的。只需添加它以防万一...
只是指出它,你可以使用内置函数ftable
获得上述内容,但我通常更喜欢dplyr
,因为它返回一个易于使用的tibble。