我有形式的數據幀:生成邏輯矢量值
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