Re: [問題] 找出從A到B的平均值
試試data.table foverlaps
library(data.table)
library(magrittr)
gt <- fread('gyro start
6.9 0
4.7 50.69
1.5 55.77
-2.3 63.44
-4.3 90
NA 100.11
NA 124.1
-1.3 150.22
1.5 160') %>%
.[,end:=start+0.01]
#because you only permit gt$start < ft$end (Not <=), so I add 0.01
ft <- fread('start end fixation_x fixation_y
50.69 100.11 1020 590
124.1 160 1123 690
200 275 1700 300
500 551.25 850 475
700 890.2 697 785') %>%
setkey(start,end)
gx <- gt[,fid:=foverlaps(gt, ft, type="within", which=TRUE)$yid] %>%
.[-which(is.na(fid)), mean(gyro,na.rm=T), by=.(fid)]
ft[,fid:=.I] %>% setkey(fid) %>% .[gx, fixation_x*V1]
※ 引述《bedroom0204 (khkh)》之銘言:
: [問題類型]:
:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
:
: [軟體熟悉度]:
: 新手(沒寫過程式,R 是我的第一次)
: [問題敘述]:
: 我有兩個的資料檔,
: 一個是Fixation的資料檔,一個是gyro的資料檔。
: Fixation的資料檔結構如下:
: start end fixation.x fixation.y fixation.x_gyro
: 1 50.69 100.11 1020 590
: 2 124.1 160 1123 690
: 3 200 275 1700 300
: 4 500 551.25 850 475
: 5 700 890.2 697 785
: gyro的資料如下:
: gyro start
: 1 6.9 0
: 2 4.7 50.69
: 3 1.5 55.77
: 4 -2.3 63.44
: 5 -4.3 90
: 6 100.11
: 7 124.1
: 8 -1.3 150.22
: 9 1.5 160
: 由於Fixation的資料是從gyro資料分析的,所以start值必定會有相同。
: 我想要求每個fixation經過幾個gyro值,並將該fixation.x乘上經過的gyro平均值。
: 例如:
: (起點終點不一定會有gyro值,所以計算在這時間區間內的gyro值)
: 第1個fixation有第2.3.4.5個gyro值;
: 第2個fixation有經過第8.9個gyro值。
: 實在是程式新手,麻煩各位給予一些指導,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.225.168.242
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1476228440.A.4B2.html
※ 編輯: cywhale (36.225.168.242), 10/12/2016 07:29:15
推
10/12 18:41, , 1F
10/12 18:41, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章