我想檢索每個組的“倒數第二”資料。目前,代碼如下,使用“group_modify”兩次。有什么可用的功能嗎?(如何簡單地當前代碼)?謝謝!
附加影像中紅色矩形的預期結果。
library(tidyverse)
test_data <- data.frame(category=c("a","a","c","a","b","c","a","b","c"),
value=c(1.72,0.32,0.22,1.29,-0.49,0.61,1.24,0.58,0.26))
test_data %>% arrange(category ) %>%
group_by(category) %>%
group_modify(~tail(.x,2)) %>%
group_modify(~head(.x,1))

uj5u.com熱心網友回復:
我們可以使用nth(value, -2),它給出了每組的倒數第二:
library(dplyr)
test_data %>%
arrange(category ) %>%
group_by(category) %>%
summarise(value1 = nth(value, -2))
category value1
<chr> <dbl>
1 a 1.29
2 b -0.49
3 c 0.61
uj5u.com熱心網友回復:
如果可以接受串列輸出,則此方法有效:
test_data %>%
arrange(category) %>%
group_split(category) %>%
map(. %>% slice(nrow(.)-1))
[[1]]
# A tibble: 1 x 2
category value
<chr> <dbl>
1 a 1.29
[[2]]
# A tibble: 1 x 2
category value
<chr> <dbl>
1 b -0.49
[[3]]
# A tibble: 1 x 2
category value
<chr> <dbl>
1 c 0.61
uj5u.com熱心網友回復:
您可以n() - 1在每個組中提取行。
library(dplyr)
test_data %>% group_by(category) %>% slice(n()-1) %>% ungroup
# category value
# <chr> <dbl>
#1 a 1.29
#2 b -0.49
#3 c 0.61
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/393465.html
上一篇:R未來多會話錯誤:values()在未來(>=1.20.0)已失效。改用value()
下一篇:使用現有向量創建新向量
