过滤tidyverse中每组的前5个观察值
我有几个不同测量位置的降水数据,希望使用过滤tidyverse中每组的前5个观察值,r,filter,dplyr,tidyverse,R,Filter,Dplyr,Tidyverse,我有几个不同测量位置的降水数据,希望使用tidyverse功能仅过滤每个位置和每组降水强度的前n个观测值 到目前为止,我已经根据地点和降水强度对数据进行了分组 这是一个最简单的例子(每个位置的每个降雨强度都有几个观测值) 非dplyr解决方案(也会重新排列行) 你可以做: df %>% group_by(location) %>% slice(1:5) location rain <dbl> <int> 1 1
tidyverse
功能仅过滤每个位置和每组降水强度的前n个观测值
到目前为止,我已经根据地点和降水强度对数据进行了分组
这是一个最简单的例子(每个位置的每个降雨强度都有几个观测值)
非dplyr解决方案(也会重新排列行)
你可以做:
df %>%
group_by(location) %>%
slice(1:5)
location rain
<dbl> <int>
1 1 1
2 1 2
3 1 3
4 1 4
5 1 5
6 2 1
7 2 2
8 2 3
9 2 4
10 2 5
df%>%
分组依据(位置)%>%
切片(1:5)
位置雨
1 1 1
2 1 2
3 1 3
4 1 4
5 1 5
6 2 1
7 2 2
8 2 3
9 2 4
10 2 5
数据表中的选项
library(data.table)
setDT(df)[, .SD[seq_len(.N) <=5], location]
库(data.table)
setDT(df)[,.SD[seq_len(.N)数据无法复制(抛出错误)。可以说是
library(dplyr)
df %>%
group_by(location) %>%
filter(row_number() %in% 1:5)
# Base R
df[unlist(lapply(split(row.names(df), df$location), "[", 1:5)), ]
# data.table
library(data.table)
setDT(df)[, .SD[1:5], by = location]
df %>%
group_by(location) %>%
slice(1:5)
location rain
<dbl> <int>
1 1 1
2 1 2
3 1 3
4 1 4
5 1 5
6 2 1
7 2 2
8 2 3
9 2 4
10 2 5
library(data.table)
setDT(df)[, .SD[seq_len(.N) <=5], location]