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进行操作?
答案 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