我想按列排列值。按列排列的值排列值
我有以下數據幀:
dput(test)
structure(list(Name = c("A", "B", "C", "D"), Margin = c(744,
3196.4722, 0, 394), T1 = c(420, 200, 2150, 70), T2 = c(630, 285,
2365, 84), T3 = c(630, 335, 2580, 105), T4 = c(666, 410, 2795,
128), T5 = c(2244, 2961.7931, 3010, 142), T6 = c(2244, 3652.472,
3440, 151), T7 = c(2244, 3722.472, 3870, 168), T8 = c(2244, 3887.472,
5160, 187), T9 = c(2244, 4112.472, 6450, 225), T10 = c(2244,
4337.472, 6450, 225), T11 = c(798, 3567.472, 4300, 112), T12 = c(630,
3582.472, 4300, 111), T13 = c(702, 3582.472, 4300, 112), T14 = c(3600,
4637.472, 3440, 78), T15 = c(744, 3067.306, 2580, 274), T16 = c(744,
2770.5666, 2580, 197), T17 = c(744, 3138.806, 2580, 80), T18 = c(2244,
3920.0836, 3870, 401), T19 = c(2244, 2789.1117, 1290, 127)), .Names = c("Name",
"Margin", "T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "T9",
"T10", "T11", "T12", "T13", "T14", "T15", "T16", "T17", "T18",
"T19"), row.names = c(NA, -4L), class = c("tbl_df", "tbl", "data.frame"
))
每行具有在名稱唯一的ID,並且我想排名的列,以確定哪些列是等於或至少小到在空白處列的值。
理想的輸出將是:
Name Margin Closest_Column
A 744.000 T15
打破平局可能是隨機的。
我嘗試:
nm1 <- paste("rank", names(test)[3:21], sep="_")
test[nm1] <- mutate_all(test[3:21],funs(rank(., ties.method="first")))
只是一個快速跟進。如果我想將條件更改爲:Val <= Margin,slice(which.min(abs(val <= Margin)))不會給我正確的答案。任何線索哪裏我錯了? – Prometheus
@Prometheus你可以嘗試'收集(測試,最近的列,val,T1:T19)%>%group_by(Name)%>%slice(其中(val <= Margin)[1]) – akrun