繁体   English   中英

从总共具有约180个值的数据列中随机删除20个连续数据值

[英]Randomly remove 20 consecutive data values from a column of data which has c.180 values in total

我有一列数据,它们在行中出现的顺序很重要,表示发生的顺序。 我想做的是随机删除该df $ col中的20个连续值。

我知道如何从列中随机删除20个数据值:

flow.df %>% sample_frac(0.8)

但是不知道如何随机删除20个连续值。

对此非常感谢Amy的帮助。

df[-c(seq(sample(nrow(df) - 19, 1), length.out = 20)), ]

对不起,我完全没听懂你的问题。 您可以尝试以下方法:

i = sample(1:(nrow(df)-19),1)
df[-(i:(i+19)),]

在这里,您只获取一个索引,然后将其删除,然后删除其后的20。我删除了选择索引> 160的可能性,因为您将无法获取以下20。可以根据需要进行调整。

有点冗长的函数,可以写得更快或更短:

remove_random_n <- function(df, n = 20) {
  rows <- nrow(df)
  upper_bound <- rows - n
  removal_start <- floor(runif(1, 1, upper_bound))
  removal_indices <- seq(removal_start, removal_start + n - 1)
  df[-removal_indices, ]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM