여기에 IRanges
패키지를 사용하는 해결책이 있습니다.
idx
는 데이터 형식이 Time
이 data
는, Time
는, data
는, ... 등등 .. 그래서,이 인덱스 1,3,5,...ncol(df)-1
을 만들어 가정합니다.
ir1
은 원하는 평균 간격입니다. 너비는 400입니다. 각 시간 열 (여기에서 열 1 및 3)에 대해 0에서 최대 (시간)까지갑니다.
ir2
는
1. 그럼 난 기본적으로 IR2는 (우리가 할) IR1와 중복에서 간격들하는 나에게 말한다 ir2
와 ir1
의 중복을 얻을 = 간격 폭의 해당 시간 열되는 I 평균을 계산하고 data.frame
을 출력하십시오.
idx <- seq(1, ncol(df), by=2)
o <- lapply(idx, function(i) {
ir1 <- IRanges(start=seq(0, max(df[[i]]), by=401), width=401)
ir2 <- IRanges(start=df[[i]], width=1)
t <- findOverlaps(ir1, ir2)
d <- data.frame(mean=tapply(df[[i+1]], queryHits(t), mean))
cbind(as.data.frame(ir1), d)
})
> o
# [[1]]
# start end width mean
# 1 0 400 401 0.6750000
# 2 401 801 401 0.8050000
# 3 802 1202 401 0.8750000
# 4 1203 1603 401 0.2285333
# [[2]]
# start end width mean
# 1 0 400 401 0.73508
# 2 401 801 401 0.13408
# 3 802 1202 401 0.26408
# 4 1203 1603 401 1.06408
# 5 1604 2004 401 3.06408
각 Time
열에는 해당 간격의 간격과 평균이있는 목록이 표시됩니다.
데이터 구조의 예를 제공해 주시겠습니까? R에 그것을 어떻게 저장하고 있습니까? 그것을 알면, 나는 간단한 해결책을 도울 수 있다고 생각합니다. –
난 그냥 사용하고 있습니다 .... data = read.delim ("clipboard") ... 데이터가 Excel 스프레드 시트에서 나온 것입니다. –
좋아, 알겠습니다. 데이터 구조에 대한 정확한 생각이 필요합니다. 'dump (head (data, 10), ")'를 실행하여 출력을 붙여 넣을 수 있습니까? 약간의 데이터를 공유 할 수 있습니까? 그것은 많은 도움이 될 것입니다. 기밀성 문제가있는 경우 먼저 임의의 값으로 숫자를 곱할 수 있습니다. –