我有形式的数据帧:生成逻辑矢量值
exampleCurrent <- data.frame(value = c(5, 4.5, 3, 2.9, 1.5),
off = as.logical(c("F", "F", "T", "T", "F")),
hiOnTarget = c(5.5, 4, 5, 4.7, 4),
loOnTarget =c(4, 3, 3, 4, 3),
hiOffTarget = c(2, 3, 4, 2, 3),
lowOffTarget = c(1, 2, 1, 1.2, 2))
数据的上下文被测量value
,和一个逻辑语句至于是工作日还是“休息”日(即周末或假日)。
Target
值是计算变量,用于确定测量值是否应被视为极端(换句话说,异常值)。在这两个目标之间的一个value
被认为是正常的,高于hiTarget
或低于loTarget
的“值”被认为是极端的。
如果off
是False
(即“打开”),则value
进行评估,以确定它是hiOnTarget
和loOnTarget
之间。如果off
是True
,该value
需要对hiOffTarget
和loOffTarget
我想获得以下进行测量:
exampleWanted <- data.frame(value = c(5, 4.5, 3, 2.9, 1.5),
off = as.logical(c("F", "F", "T", "T", "F")),
hiOnTarget = c(5.5, 4, 5, 4.7, 4),
loOnTarget =c(4, 3, 3, 4, 3),
hiOffTarget = c(2, 3, 4, 2, 3),
lowOffTarget = c(1, 2, 1, 1.2, 2),
extremeValue = as.logical(c("F", "T", "F", "T", "T")))
我试图产生第六列,extremeValue
,已经集中在if(){}else{}
风格逻辑语句,其中最接近的是目前:
exampleWanted <- if(exampleCurrent$value > exampleCurrent$hiOnTarget | exampleCurrent$value > exampleCurrent$loOnTarget) {
exampleWanted <-"True"
} else {
exampleWanted <-"False"}
我明明只得到了哈在这里,因为这将盲目地评估计算完全是'开',但是我甚至无法让这部分工作。我打算使用switch()
在两个类似的if(){}else{}
命令之间切换,尽管完全不同的解决方案会很好。
N.B.这是我在教程之外编写的第一个主要R脚本的一小部分,所以对于可能几乎是一个简单的问题表示歉意。
的变化或为'变换(exampleCurrent,extremeValue =值>关闭* hiOffTarget +(关)* hiOnTarget!|值<关* lowOffTarget +(关闭)* loOnTarget)' – akrun
@ arvi1000,这个工程,我想我理解它的大部分。但是,我对包含'with'的问题感到困惑。 R帮助状态: 在从数据构建的环境中评估R表达式,可能会修改(复制)原始数据。 对我不好理解,我认为这就是R所做的事情? – DaveRGP
在这里,'with(data_frame_name,expression)'只是清理代码的一种方法。为了避免重复'data_frame_name',我们说''expression'中的所有对象都是data.frame'的组件。因此,'with(exampleCurrent,ifelse(off,hiOffTarget,hiOnTarget))'与'ifelse(exampleCurrent $ off,exampleCurrent $ hiOffTarget,exampleCurrent $ hiOnTarget')是一样的。 – arvi1000