考慮數據幀,DF:
df = tribble(
~Shares, ~Price1, ~Price2, ~Price3,
100, 9, 10, 11,
200, 5, 6, 7,
300, 3, 2, 1
)
第一種方法 - 可怕。硬編碼。這可行,但你想要一個可重複的解決方案。
df$Value1 = df$Shares * df$Price1
df$Value2 = df$Shares * df$Price2
df$Value3 = df$Shares * df$Price3
第二條本辦法 - 更好,但仍然不是很大。對於值集原單數據幀,按價格倍增,分配colnames,數據合併在一起
stockPrice = df[,2:4]
stockValue = df$Shares * stockPrice
colnames(stockValue) = c(paste("value", seq(1:3), sep = ""))
cbind(df, stockValue)
三(最好)的方法 - 定義一個函數!
calculateValues = function(df){
N = ncol(df)
L = N-1
stockPrice = df[,2:N]
stockValue = df$Shares * stockPrice
colnames(stockValue) = c(paste("value", seq(1:L), sep = ""))
cbind(df, stockValue)
}
calculateValues(df)
這應該輸出一個新的數據幀,每次有份*值,命名和一切!唯一的問題是你的df的第一列每次都必須命名爲「Shares」。
什麼是您的預期輸出 – Wen