【发布时间】:2023-03-28 03:40:01
【问题描述】:
我有一个很大的 data.table(大约 24000 行并且还在增长)。我想根据几个标准对该数据表进行子集化,并且从该子集中(最终大约为 3000 行)我想随机抽取 4 行。我不想创建一个命名为 3000 左右的行 data.table,计算其行数,然后根据行号进行采样。我怎样才能在飞行中做到这一点?还是我应该通过创建表格然后对其进行处理、对其进行采样然后使用rm() 来摆脱它来吸收它?
让我们模拟一下我的问题
require(data.table)
random.length <- sample(x = 15:30, size = 1)
data.table(city=sample(c("Cape Town", "New York", "Pittsburgh", "Tel Aviv", "Amsterdam"), size=random.length, replace = TRUE), score = sample(x=1:10, size = random.length, replace=TRUE))
这会生成一个随机长度表,它模拟了这样一个事实,即根据我的标准和我的起始表,我不知道子集表的长度是多少
现在,如果我只想要前三行,我可以这样做
data.table(city=sample(c("Cape Town", "New York", "Pittsburgh", "Tel Aviv", "Amsterdam"), size=random.length, replace = TRUE), score = sample(x=1:10, size = random.length, replace=TRUE))[1:3]
但是假设我不想要前三行,而是随机的 3 行,那么我想做这样的事情......
data.table(city=sample(c("Cape Town", "New York", "Pittsburgh", "Tel Aviv", "Amsterdam"), size=random.length, replace = TRUE), score = sample(x=1:10, size = random.length, replace=TRUE))[sample(x= 1:number of rows of that previous data.table,size = 3 ]
那是行不通的。如何即时计算初始 data.frame 的长度是多少?
【问题讨论】:
标签: r data.table sample