[英]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.