【发布时间】:2021-03-23 09:10:28
【问题描述】:
我想删除 ID 号大于长度值的所有行。
Tracks <- c("a","a","a","b","b","b","b","c","c")
Length <- c(2,2,2,1,1,1,1,2,2)
ID <- c(1,2,3,1,2,3,4,1,2)
df <- data.frame(Tracks, Length, ID)
Tracks Length ID
1 a 2 1
2 a 2 2
3 a 2 3
4 b 1 1
5 b 1 2
6 b 1 3
7 b 1 4
8 c 2 1
9 c 2 2
我使用dplyr包的group_by对我的数据进行分组,打印显示分组成功
df_group <- df %>% group_by(Tracks)
> print(df_group)
# A tibble: 9 x 3
# Groups: Tracks [3]
Tracks Length ID
<chr> <dbl> <dbl>
1 a 2 1
2 a 2 2
3 a 2 3
4 b 1 1
5 b 1 2
6 b 1 3
7 b 1 4
8 c 2 1
9 c 2 2
我尝试使用 head 函数,因为这应该会给我最好的结果。为此,我想用一个函数定义 n= 并返回每个组的 Length 的最大值
df2 <- head(df_group, n = max(df$Length))
print(df2)
# A tibble: 2 x 3
# Groups: Tracks [1]
Tracks Length ID
<chr> <dbl> <dbl>
1 a 2 1
2 a 2 2
group_modify(df_group, head(df_group, n = max(df$Length)), .keep = TRUE)
Error: Can't convert a `grouped_df/tbl_df/tbl/data.frame` object to function
似乎 head 函数不适用于组,因为它只返回前两行,我尝试了 group_modify 但这也不起作用。
有什么想法可以做到这一点吗?
【问题讨论】: