使用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]