我有一张表格,其中包含有关某些用户的信息。我想要做的是提取每个用户的第三行和最后一行......我该怎么做?例如:
User | num |
use1 | 3 |
use1 | 2 |
use1 | 5 |
use1 | 8 |
use1 | 6 |
use2 | 1 |
..
因此,在此示例中,我希望行num = 5
和num = 6
,这将继续为表中的每个不同用户。
答案 0 :(得分:1)
这个怎么样?
library(dplyr)
# Assuming df is your sample data
df %>% group_by(User) %>% filter(row_number() %in% c(3, n()))
答案 1 :(得分:1)
您可以使用这样的data.table解决方案:
library(data.table)
dt = data.table("user" = c(rep(1,5),rep(2,5)),"num" = c(3,2,5,8,6,10:6))
dt[, "row" := 1:.N, by =.(user)]
> dt[ , .(Num = 3,.N), by = .(user)]
user Num N
1: 1 3 5
2: 2 3 5
答案 2 :(得分:1)
对于多样性,这是一个plyr
解决方案:
library(plyr)
#group by user and return 3rd and last row
ddply(df, .(User), function(x) x[c(3, nrow(x)),])
答案 3 :(得分:0)
我们可以使用base R
i1 <- with(data, as.logical(ave(seq_along(User), User, FUN =
function(x) seq_along(x) %in% c(3, length(x) & length(x) > 3))))
data[i1,]