如何基于dplyr中的条件进行过滤?

时间:2016-08-29 22:37:18

标签: r dplyr

ID val1 val2
a  1  6
a  1  6
a  3  2
a  4  2
a  5  5
b  2  3
b  2  2
c  3  2
c  4  4
c  5  5
c  6  6
c  5  2
c  2  3

使用

dat <-df %>%
  group_by(ID) %>%
  summarise(corr=cor(val1, val2)) 

这计算每组的val1和val2的相关性。但是我想仅针对出现次数超过3次的ID进行过滤。基本上,我想计算每个ID的出现次数(例如a = 5,b = 2,c = 6),并且只计算那些出现次数超过3次的ID的相关性(在这种情况下,b将是被忽略,因为它发生两次)。

这是大型数据库的一部分。

如何使用dplyr进行操作?

2 个答案:

答案 0 :(得分:4)

这将为您提供的输出不包含少于2的情况。

dat <- df %>%
  group_by(ID) %>%
  mutate(N = n()) %>%
  filter(N >= 3) %>%
  summarise(corr = cor(val1, val2))

答案 1 :(得分:0)

以下是library(data.table) setDT(df)[, if(.N >2) .(corr = cor(val1, val2)) , by = ID] # ID corr #1: a -0.5319061 #2: c 0.6101702

的选项
$s = function ($vars) {
    extract($vars);
    return "$who likes $what";
};
echo $s(['who' => 'Tim', 'what' => 'King Pao']); // Tim likes King Pao
相关问题