比方說,我有一個DF包含ID,性別,和幾個數值變量,MAX1,MAX2和MAX3,其中總和基於變量R中的名字
MAX1 =第一的變量名X1,X2,X3,X4,X5
MAX2的最大值= X1,X2,X3,X4的第二最大值的變量名,X5
MAX3 =第三最大值的變量名x1,x2,x3,x4,x5
### Generate data
set.seed(123)
ID <- c(1,2,3,4,5,6,7,8,9,10)
gender <- c("m", "m", "m", "f", "f", "m", "m", "f", "f", "m")
x1 <- rnorm(10, 0, 1)
x2 <- rnorm(10, 0, 1)
x3 <- rnorm(10, 0, 1)
x4 <- rnorm(10, 0, 1)
x5 <- rnorm(10, 0, 1)
df <- data.frame(ID, gender, x1, x2, x3, x4, x5)
maxes <- t(sapply(1:nrow(df), function(i) {
names(sort(df[i,3:7], decreasing=T)[1:3])
}))
colnames(maxes) <- c("MAX1","MAX2", "MAX3")
df <- cbind(df, maxes)
現在我需要創建一個新的列(調用ir m_sum),它的總和值爲MAX1和MAX2。
例如,對於ID = 1,MAX1 = x2和MAX2 = x4,則m_sum等於1.2240818 + 0.42646422 = 1.650546。
是否有理由通過先確定MAXi行名稱然後嘗試使用行名稱來總結每行的兩個最高值?我寧願轉置你的數據,並總結前兩個值,但也許你已經簡化了你的例子,以便我的方法打破其他要求... –
是的,我知道這不是最有效的....但後來我需要使用MAX1和MAX2 ... – user9292