gpt4 book ai didi

r - 删除一组具有特定值的变量中的随机观察子集

转载 作者:行者123 更新时间:2023-12-04 00:08:57 26 4
gpt4 key购买 nike

假设我有一个数据框,我想在其中删除满足特定标准的随机观察样本(即整行)。以这个数据框为例:

id    var1  var2
AAAA 1 Car
BBBB 2 Truck
CCCC 1 Boat
DDDD 2 Car
EEEE 1 Truck
FFFF 2 Car
FFFF 2 Car
FFFF 2 Car
FFFF 2 Car

如何进行 (1) 对 var2=="Car" 的观察结果进行随机抽样 (n=3),以及 (2) 删除 var2 的所有其他行=="Car" 没有采样?我在某个标准(即“var2=Car”)内使用 sample() 时遇到问题,因为它还会从数据集中删除所有其他观察结果(当我想保留其他行时) 卡车)

最佳答案

关于您在使用 sample 时遇到的困难,它可能与您从什么/从哪里采样有关。

您不想直接从 data.frame 中采样,因为这会对列进行采样

您不想从逻辑向量中采样,因为使用结果来进一步索引 data.frame 并不简单。

相反,您希望从行的索引中进行抽样。您可以从索引的适当子集中进行采样,然后与第二个子集组合,但这很麻烦。

更直接的方法是对你要取出的东西进行抽样:

# remove 3 random rows where var2 is "car": 
DT[-sample(which(var2=="Car"), 3)]

# id var1 var2
# 1: BBBB 2 Truck
# 2: CCCC 1 Boat
# 3: DDDD 2 Car
# 4: EEEE 1 Truck
# 5: FFFF 2 Car
# 6: FFFF 2 Car

在哪里 DT <- data.table(yourDataFrame)

注意 which( ) 的使用为行提供索引。如果没有,我会从 TRUE 的向量中采样。 & FALSE (感谢 recycling 会产生非常不可预测的结果)。

关于r - 删除一组具有特定值的变量中的随机观察子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16159828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com