我需要找到一組持續時間的最大公約數(gcd):dur
。R - 最大公約數dplyr例程
我的數據是這樣的
actrec dur
1 c Personal Care 120
2 c Free Time 10
3 c Free Time 70
4 c Free Time 40
5 b Unpaid 10
6 c Free Time 20
7 c Personal Care 30
8 c Free Time 40
9 c Free Time 40
10 c Free Time 10
我使用的功能schoolmath
庫gcd
。 我正在循環訪問我的數據並將值存儲在向量v
中。 最後,我使用v
的min
來查找我的數據的gcd。
library(schoolmath)
l = length(dt$dur)
v = array(0, l)
for(i in 2:l){
v[i] = gcd(dt$dur[i], dt$dur[i-1])
}
minV = min(v[-1])
minV
其中給出10
。
但是,我很難將此例程翻譯爲dplyr
。
我想到了類似(lag
for循環)。
dt %>% mutate(gcd(dur, lag(dur, 0)))
但它不工作。我不確定如何插入min
。
任何線索?
看起來'gcd'沒有矢量化。也許'dt%>%mutate(dur1 = lag(dur,default = dur [1]))%>%rowwise()%>%mutate(new1 = gcd(dur,dur1))' – akrun
這裏是矢量化版本的gcd這可能是有用的http://stackoverflow.com/a/21504113/3001626 –
感謝有趣 – giacomo