我已經根據各種條件創建了多個數據幀。現在我想要對不同的數據幀進行採樣,但是我希望在採樣後刪除這些行。我曾嘗試dplyrs sample_n:從數據幀陣列中隨機抽樣
sample_n(df, 4)
的問題是,這不會刪除線,我需要一些遞歸循環,將刪除該線一旦被採樣?還是有一些方便的功能可以幫助我?
我已經根據各種條件創建了多個數據幀。現在我想要對不同的數據幀進行採樣,但是我希望在採樣後刪除這些行。我曾嘗試dplyrs sample_n:從數據幀陣列中隨機抽樣
sample_n(df, 4)
的問題是,這不會刪除線,我需要一些遞歸循環,將刪除該線一旦被採樣?還是有一些方便的功能可以幫助我?
適合我。
# generate data
a <- data.frame(letters = letters[1:5], var = rnorm(5))
b <- data.frame(letters = letters[6:10], var = rnorm(5))
c <- data.frame(letters = letters[11:15], var = rnorm(5))
xy <- list(a, b, c)
set.seed(357) # set seed for reproducibility
dfsample <- sample(seq_len(length(xy)), 1) # sample out one data.frame
xy[[dfsample]]
letters var
1 a 1.51348192
2 b -0.60657737
3 c 0.51828252
4 d -0.05352487
5 e -1.34303266
# remove random row, notice the minus sign in front of the sample
xy[[dfsample]] <- xy[[dfsample]][-sample(1:nrow(xy[[dfsample]]), 1), ]
xy[[dfsample]]
letters var
2 b -0.60657737
3 c 0.51828252
4 d -0.05352487
5 e -1.34303266
modelr::crossv_mc(mtcars, 5, 0.5)
創建5套相同大小的獨佔分割的。它們存儲爲列表列,並使用resample
類,這是有效的內存。
# A tibble: 5 × 3 train test .id <list> <list> <chr> 1 <S3: resample> <S3: resample> 1 2 <S3: resample> <S3: resample> 2 3 <S3: resample> <S3: resample> 3 4 <S3: resample> <S3: resample> 4 5 <S3: resample> <S3: resample> 5
請提供一個小的可重複的例子和預期產出 – akrun
有一個看看'modelr'包的tidyverse方法。 – Axeman
@akrun同樣的問題沒有被問到。我不僅想要對數據幀進行採樣,而且需要在採樣後續時間時再次對相同的數據進行採樣。 – Lowpar