首页 > 解决方案 > 在 dplyr 中使用“first”来选择组的第一个不是 NA 的值

问题描述

我的 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 列的组值除以组的第一个 DENOM 值(不是 NA)来添加第五列。我该怎么做呢?

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

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

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

我也试过

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

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

标签: rdplyr

解决方案


推荐阅读