我有一個帶有數字計數值的資料框。我想創建一個新表,其中包含每列前 n 個值的行名。
df <- data.frame(a = c(1,4,5,2), b = c(7,1,4,6), c = c(5,6,7,1)
rownames(df) <- c(w,x,y,z)
使用 n = 2 我想要的輸出是
| 一種 | 乙 | C |
|---|---|---|
| 是 | 瓦 | 是 |
| X | z | z |
我能夠使用以下方法提取每列的前 5 個值,df2 <- apply(df, 2, function(x) sort(unique(x),decreasing =TRUE)[1:5])但我無法弄清楚如何獲取與每個值對應的行名。
uj5u.com熱心網友回復:
一個可能的解決方案:
df <- data.frame(a = c(1,4,5,2), b = c(7,1,4,6), c = c(5,6,7,1))
rownames(df) <- c("w","x","y","z")
f <- function(x) names(sort(x,decreasing = T))[1:2]
apply(df,2,f)
#> a b c
#> [1,] "y" "w" "y"
#> [2,] "x" "z" "x"
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/344010.html
