在dplyr中使用“ first”来选择组的第一个非NA值

时间:2019-01-24 14:10:20

标签: r dplyr

我的df“ temp”看起来像下面的前四列:

ID OBS NUMER DENOM   RATIO
1  1   26    NA      1.5
1  2   10    NA      0,5556
1  3   18    18      1
1  4   51    26.333  1,461
2  1   17    NA      0,2

我正在尝试通过将NUMER列的组值除以该组的第一个不是NA的DENOM值来添加第五列。我该怎么做?

temp %>% 
  group_by(ID) %>% 
  mutate(RATIO = NUMER/first(DENOM[!is.na(DENOM)]))

但是,运行此命令会给我以下错误消息:

mutate_impl(.data,点)中的错误:列RATIO的长度必须为2(组大小)或一个,而不是0。

我也尝试过

temp %>% 
  group_by(ID) %>% 
  mutate(RATIO = NUMER/first(.$DENOM[!is.na(.$DENOM)]))

,但是在这种情况下,它似乎被整个DENOM列的第一个值除以,而不是该列的组的第一个值。请帮忙! :(

0 个答案:

没有答案