roomTemp , skinTemp . . , .
UPDATE:
, , .
library(data.table)
library(reshape2)
library(dplyr)
library(purrr)
library(ggplot2)
theme_set(theme_classic(base_size=16))
:
set.seed(395)
df1 <- data.frame(roomTemp = c(cumsum(rnorm(1*36)), cumsum(rnorm(1*36))),
ID = rep(c("A","B"), each=36))
df2 <- data.frame(skinTemp = c(cumsum(rnorm(32*60*36,0,0.01)),
cumsum(rnorm(32*60*36,0,0.01))),
ID = rep(c("A","B"), each=32*60*36))
, df1, df1 df2, .
df1$time = rep(0:(0.5*nrow(df1)-1)*60 + 0.0438,2)
df2$time = rep(0:(0.5*nrow(df2)-1)/32, 2)
. ID time, ID.
setDT(df1)
setDT(df2)
setkey(df1, ID, time)
setkey(df2, ID, time)
df2 = df1[df2, roll="nearest"]
names(df2)[grep("roomTemp", names(df2))] = "roomTempRoll"
roomTemp ID, map_df purrr. map_df ID. approx . approxfun , . map_df , y, roomTemp, dplyr roomTempInterp df2.
df2$roomTempInterp = unique(df2$ID) %>%
map_df(~ approx(df1$time[df1$ID==.x], df1$roomTemp[df1$ID==.x],
xout=df2$time[df2$ID==.x]), .id="ID") %>% .$y
ID, ID.
ggplot(melt(df2, id.var=c("ID", "time")), aes(time, value, colour=variable)) +
geom_line(size=0.7) +
geom_point(data=df1, aes(time, roomTemp), colour="black") +
facet_grid(ID ~ .)

ID:
df2 %>% group_by(ID) %>%
summarise(r_interp = cor(skinTemp, roomTempInterp, use="pairwise.complete.obs"),
r_roll = cor(skinTemp, roomTempRoll, use="pairwise.complete.obs"))
ID r_interp r_roll
1 A -0.04853998 -0.02993207
2 B -0.53993960 -0.53092150
-, , , .
library(data.table)
library(reshape2)
library(dplyr)
library(ggplot2)
theme_set(theme_classic(base_size=16))
set.seed(395)
df1 <- data.frame(roomTemp = cumsum(rnorm(1*36)))
df2 <- data.frame(skinTemp = cumsum(rnorm(32*60*36,0,0.01)))
. datetime, , .
df1$time = 0:(nrow(df1)-1)*60
df2$time = 0:(nrow(df2)-1)/32
, , . approxfun . splinefun .
roomTempInterp = approxfun(df1$time, df1$roomTemp)
, data.table .
setDT(df1)
setDT(df2)
setkey(df1, time)
setkey(df2, time)
.
df2 = df1[df2, roll="nearest"]
names(df2)[grep("roomTemp", names(df2))] = "roomTempRoll"
roomTemp df1 df2.
df2 = df1[df2, ]
, .
df2$roomTempInterp = roomTempInterp(df2$time)
, , roomTemp . 10 df2, df2 roomTempRoll roomTempInterp roomTemp df1. roomTemp skinTemp.
roomTemp time roomTempRoll skinTemp roomTempInterp
1: -1.21529 0.00000 -1.21529 -0.006511475 -1.215290
2: NA 0.03125 -1.21529 -0.014058076 -1.215531
3: NA 0.06250 -1.21529 -0.017741690 -1.215773
4: NA 0.09375 -1.21529 -0.030211177 -1.216014
5: NA 0.12500 -1.21529 -0.027105225 -1.216255
6: NA 0.15625 -1.21529 -0.035784295 -1.216497
7: NA 0.18750 -1.21529 -0.031319748 -1.216738
8: NA 0.21875 -1.21529 -0.033758959 -1.216979
9: NA 0.25000 -1.21529 -0.040667384 -1.217220
10: NA 0.28125 -1.21529 -0.026291442 -1.217462
, , . roomTemp.
ggplot(melt(df2 %>% select(-roomTemp), id.var="time"), aes(time, value, colour=variable)) +
geom_line(size=1) +
geom_point(data=df2, aes(time, roomTemp), colour="black")
