繁体   English   中英

Dplyr::last - 如果无法在汇总中计算一个变量,则丢弃行

[英]Dplyr::last - rows dropped if one variable can't be computed in summarise

我有一个要总结的数据框,对于某些组,某些变量应该返回 NA,但整行都被删除了。 玩具示例 Df:

df=data.frame(button=c(1,2,3,3,3,2),group=c(1,1,1,2,2,2),RT=c(100,110,120,130,140,150))

当我在不使用“last”的情况下进行总结时,我得到了预期的结果:

df%>%dplyr::group_by(group) %>%dplyr::summarize(RT=mean(RT), RT.button1=mean(RT[button==1]))
# A tibble: 2 x 3
  group    RT RT.button1
* <dbl> <dbl>      <dbl>
1     1   110        110
2     2   140        NaN

但是当我最后使用时,该行被删除了

df%>%dplyr::group_by(group) %>%dplyr::summarize(RT=mean(RT), RT.button1=mean(RT[button==1]),RT.last.button1=last(RT[button==1]))
# A tibble: 1 x 4
# Groups:   group [1]
  group    RT RT.button1 RT.last.button1
  <dbl> <dbl>      <dbl>           <dbl>
1     1   110        110             110

有没有办法让“最后”返回 NA 而不是删除该行? 如果有任何指点,我将不胜感激!

这当然是因为您使用的是data.table::last而不是dplyr::last

使用data.table::last

df %>% 
  dplyr::group_by(group) %>% 
  dplyr::summarize(RT = mean(RT), 
                   RT.button1 = mean(RT[button == 1]),
                   RT.last.button1 = data.table::last(RT[button == 1]))

# Groups:   group [1]
  group    RT RT.button1 RT.last.button1
  <dbl> <dbl>      <dbl>           <dbl>
1     1   110        110             110

使用dplyr::last

df %>% 
  dplyr::group_by(group) %>% 
  dplyr::summarize(RT = mean(RT), 
                   RT.button1 = mean(RT[button == 1]),
                   RT.last.button1 = dplyr::last(RT[button == 1]))
# A tibble: 2 x 4
  group    RT RT.button1 RT.last.button1
  <dbl> <dbl>      <dbl>           <dbl>
1     1   110        110             110
2     2   140        NaN              NA

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM