2016-12-19 4 views
1

私はtransectに沿って収集された画像のデータフレームを持っています。イメージ全体を無作為にサンプリングしたいと考えています(トランセクトあたり約1000個)。私たちは、移動中のウィンドウ(20/30秒または10〜15レコードのいずれか)から無作為に選択することでこれを実行したいと考えています。したがって、ミッションの最初の20秒間に1画像、21〜40秒間に1枚などを選択します。乱数または移動中の時間を選択するR

有用なフィールドは、次のとおりの形式で

Date.timeの(因子)形式で20161102 101440
Date.Time.Local(POSIXct):2016年11月2日午前10時14分40秒
ミッション。時間(INT):192(ミッションへの秒は、使用可能な画像のために1から始まり、2-3で毎回上がるません)
FILENAME(ファクター):20161102_hb01_0049.jpg

吐き出すことが可能である場合ランダムに選択されたレコードで選択されたファイル名は追加ボーナスになります。

私は現在だけ別々にそれぞれ1を選択するために、範囲を定義することで、これを行うには非常に長い方法を考えることができますが、これはまた、トランセクトを越え

おかげで再現できないと同じようにすべてのヘルプは素晴らしいことだ、それは素晴らしいです!これは、画像の数のウィンドウを選択するために働くように見えますが、データが等間隔に上がらないため、データに適用されたときに時間がかかることはありません。

ヘッド(S)
ファイル名日時
223 20161102_hb01_fs_0049.jpg 2016年11月2日2時38分03秒
224 20161102_hb01_fs_0050.jpg 2016年11月2日2時38分05秒
225 20161102_hb01_fs_0051 .JPG 2016年11月2日2時38分08秒
226 20161102_hb01_fs_0052.jpg 2016年11月2日2時38分10秒
227 20161102_hb01_fs_0053.jpg 2016年11月2日二時38分13秒
228 20161102_hb01_fs_0054.jpg 2016-11-02 02:38:15

+2

'(の一部)あなたのデータフレーム – HubertL

答えて

0
s<-data.frame(DateTime=seq(as.POSIXct("2016-11-02 10:40:00"), by="sec", length.out=100), FileName=paste0(rep("file-",100), 1:100)) 
window<-20 
sampleSize <-5 
groups<-seq(1, nrow(s), by=window) #indexes of first element in each window 
result<-lapply(groups, function(x) s[sample(x:(x+window-1), sampleSize), "FileName"]) #for each group, randomly select sampleSize number of elements 

編集:時間間隔によって分割が

s<-data.frame(DateTime=as.POSIXct("2016-11-02 10:40:00") + sample(1:200, 100, replace = T)) 
s$FileName<-paste0("file-",rownames(s),"-",format(s$DateTime, "%H%M%S")) 
s<-s[order(s$DateTime),] #Order date time from old to recent 

sampleSize <-5 
window.sec<- 25 

split <- seq(min(s$DateTime), max(s$DateTime), by=(window.sec+1)) # splitting into groups 
#[1] "2016-11-02 10:40:02 MYT" "2016-11-02 10:40:28 MYT" "2016-11-02 10:40:54 MYT" "2016-11-02 10:41:20 MYT" "2016-11-02 10:41:46 MYT" 
#[6] "2016-11-02 10:42:12 MYT" "2016-11-02 10:42:38 MYT" "2016-11-02 10:43:04 MYT" 

groups<- c(sapply(split, function(x) min(which(s$DateTime>=x))) , nrow(s)) #indexes of first element in each group, and include the last index. 
#The first element in each group can be more recent than that in the split, if x is n. 
# > s[groups,] 
# DateTime  FileName 
# 56 2016-11-02 10:40:02 file-56-104002 
# 53 2016-11-02 10:40:30 file-53-104030 
# 60 2016-11-02 10:40:56 file-60-104056 
# 95 2016-11-02 10:41:20 file-95-104120 
# 81 2016-11-02 10:41:46 file-81-104146 
# 57 2016-11-02 10:42:12 file-57-104212 
# 39 2016-11-02 10:42:39 file-39-104239 
# 59 2016-11-02 10:43:04 file-59-104304 
# 75 2016-11-02 10:43:20 file-75-104320 

result<-lapply(1:(length(groups)-1), function(i) s[sample(groups[i]:(groups[i+1]-1), sampleSize), "FileName"]) 
names(result) <- as.character(split) 
+0

感謝のdput'が、それは素晴らしいです提供してください!これは、画像の数のウィンドウを選択するために働くように見えますが、データが等間隔に上がらないため、データに適用されたときに時間がかかることはありません。私のデータの頭部が主な問題になる –

+0

@ JT_3KSC編集を参照してください – Jean

関連する問題