我有我需要做計算的列中的數據。是否有可能使用以前的行值而不使用循環?例如。如果在第一列中的值是139,那麼計算最後5個值的中值以及上面5行的值和當前行中的值的百分比變化?使用先前行值無列循環的列計算
ID Data PF
135 5 123
136 4 141
137 5 124
138 6 200
139 1 310
140 2 141
141 4 141
所以這裏這個數據集,你會怎麼做:
- 在
Data
查找139
在ID
列 - 最後5行返回平均值(給出
4.2
)值的 - 回報表現
PF
5行以上到當前值(給出152%
)
如果我會做一個循環,它看起來是這樣的:
for (i in 1:nrow(data)){
if(data$ID == "139" & i>=3)
{data$New_column <- data[i,"PF"]/data[i-4,"PF"] - 1
}
的問題是,環路採用因太長許多數據點。 ID 139將在數據集中出現好幾次。
非常感謝。 Carlos
請添加一個可重現的示例和預期輸出。 – Sotos
查看'zoo'包中的'rollapply'。 – Tutuchan
您能否定義您在性能上高於當前值的PF 5行中的值?它的意思是?它的中位數?在任何情況下,你都不會有139行以上的5行,只是4. – aichao