[英]Subtract an observation from another in different column and add a specific value to the result to create a new observation in the first column in R
我有這樣的東西,
A B C
100 24
18
16
21
14
我正在嘗試編寫一個函數來計算相應行的 C = AB,然后將 20 添加到 C,即下一行的 A 並重復該步驟,最后應該是這樣。
A B C
100 24 76
96 18 78
98 16 82
102 21 81
101 14 87
我正在手動進行 atm 之類的操作
df$C[1] = df$A[1] - df$B[1] 然后
df$A[2] = df$C[1]+20 並重復它。
我想創建一個函數而不是這樣做。 任何幫助,將不勝感激。
這是使用for
循環的另一種方法:
數據
df <- data.frame(A=NA, B = c(24L, 18L, 16L, 21L, 14L),C=NA)
初始化 df 的第一行
df$A[1] <- 100
df$C[1] <- df$A[1]-df$B[1]
填充 df 的剩余行
for (i in 1:(length(df$B)-1)){
df$C[i+1] <- df$C[i]-df$B[i+1]+20
df$A[i+1] <- df$C[i]+20
}
輸出
df
A B C
1 100 24 76
2 96 18 78
3 98 16 82
4 102 21 81
5 101 14 87
我們可以只從B
列開始,然后分別計算A
和C
start_value <- 100
df$A <- c(start_value, start_value - cumsum(df$B) + 20 * 1:nrow(df))[-(nrow(df) + 1)]
df$C <- df$A - df$B
df
# B A C
#1 24 100 76
#2 18 96 78
#3 16 98 82
#4 21 102 81
#5 14 101 87
數據
df <- structure(list(B = c(24L, 18L, 16L, 21L, 14L)),
class = "data.frame", row.names = c(NA, -5L))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.