使用r为每个人选择第五行

使用r为每个人选择第五行,r,select,row,R,Select,Row,我的数据框如下所示: ID x1 x2 1 23 12 1 13 9 1 .. .. 1 1 1 1 ... 2 2 2 2 2 2 ... 对个体进行重复测量。我想通过只为每个个体选择第五个观察值来生成一个数据帧。这似乎很容易,但我就是想不出正确的方法。感谢您的帮助……我们可以从dplyr library(dplyr) df1 %>% group_by(ID) %>% slice(5) 我们可以从dplyr li

我的数据框如下所示:

ID    x1    x2
1     23    12
1     13    9
1     ..    ..
1
1
1
1
...
2
2
2
2
2
2
...

对个体进行重复测量。我想通过只为每个个体选择第五个观察值来生成一个数据帧。这似乎很容易,但我就是想不出正确的方法。感谢您的帮助……

我们可以从
dplyr

library(dplyr)
df1 %>%
   group_by(ID) %>%
   slice(5)

我们可以从
dplyr

library(dplyr)
df1 %>%
   group_by(ID) %>%
   slice(5)

base R中的一种方法是直接采用拆分应用组合概念。首先
按ID将data.frame拆分为data.frame列表。然后使用
lappy
[
从每个data.frame中拉出第五行,最后
rbind
将结果与
do.call一起显示

do.call(rbind, lapply(split(df, df$id), function(x) x[5,]))
  id values
a  a      5
b  b      5
c  c      5
d  d      5
e  e      5
f  f      5
g  g      5
val列的值用于表示行号

数据

df <- data.frame(id=rep(letters[1:7], each=10), values=rep(1:10))

df基本R中的一种方法是直接使用split-apply-combine概念。首先
按ID将data.frame拆分为data.frames列表。然后使用
lappy
[
从每个data.frames中拉出第五行,最后
rbind
将结果与
do.call一起调用

do.call(rbind, lapply(split(df, df$id), function(x) x[5,]))
  id values
a  a      5
b  b      5
c  c      5
d  d      5
e  e      5
f  f      5
g  g      5
val列的值用于表示行号

数据

df <- data.frame(id=rep(letters[1:7], each=10), values=rep(1:10))

df另一种使用
数据的方法

library(data.table)    
setDT(df)[, .SD[5], by=ID]

另一种使用
data.table
的方法是

library(data.table)    
setDT(df)[, .SD[5], by=ID]