【发布时间】:2014-12-17 21:46:05
【问题描述】:
我的数据包含在数据框中排列的单个患者(每个患者由一行表示)的串行温度测量:
df<-data.frame(H0=c(35.4, 36.0, 36.0, 36.4), H1=c(NA, 34.0, 33.4, NA),
H2=c(NA, 33.5, NA, 34.2), H3=c(32.9, NA, 34.0, NA),
H4=c(NA, 33.1, NA, NA), H5=c(33.2, NA, NA, 32.8))
目标温度为 33.0。我编写了一个简单的函数,它返回每次测量与目标温度的差值:
sumfun<-function(x) {
if (x>=33 & !is.na(x)) {
x-33
} else if (x<33 & !is.na(x)) {
33-x
} else {
0
}
}
在控制台中按预期工作。
我想要实现的是数据框末尾的一列,其中包含每位患者的过冲/下冲测量值的总和。
df$cumushoot<-rowSums(df[,1:6]-33, na.rm=TRUE)
接近我想要的,除了我想添加(而不是减去)下冲值。因此,我想要 2.6 的第一个患者返回 2.5。如果我尝试:
df$cumushoot1<-rowSums(sumfun(df[,1:6]))
返回:
Warning message:
In if (x >= 33 & !is.na(x)) { :
the condition has length > 1 and only the first element will be used
【问题讨论】:
标签: r