[英]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.