Ker*_*rry 6 r subset random-sample data.table
我正在寻找一种从数据表中选择行的有效方法,这样我就可以为特定列中的每个唯一值设置一个代表性行.
我举一个简单的例子:
require(data.table)
y = c('a','b','c','d','e','f','g','h')
x = sample(2:10,8,replace = TRUE)
z = rep(y,x)
dt = as.data.table( z )
Run Code Online (Sandbox Code Playgroud)
我的目标是通过对列z中的每个字母ah采样一行来对数据表dt进行子集化.
OP在示例中仅提供了一列.假设原始数据集中有多个列,我们按"z" sample
分组,每组的行序列中有1行,获取行索引(.I
),使用行索引()提取列$V1
并使用它来分组'dt'的行.
dt[dt[ , .I[sample(.N,1)] , by = z]$V1]
Run Code Online (Sandbox Code Playgroud)
您可以使用 dplyr
library(dplyr)
dt %>%
group_by(z) %%
sample_n(1)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1799 次 |
最近记录: |