假設您有以下資料集。
df1<-matrix(data = 1:10,
nrow = 5,
ncol = 5)
colnames(df1)=c("a","b","c","d","e")
您將如何從每個單獨的列中提取前 X 值作為新資料框?
預期的輸出將是這樣的(對于每列中的前 3 個值
| 一種 | b | C | d | e |
|---|---|---|---|---|
| 5 | 10 | 5 | 10 | 5 |
| 4 | 9 | 4 | 9 | 4 |
| 3 | 8 | 3 | 8 | 3 |
uj5u.com熱心網友回復:
您可以使用apply將函式應用于每一列 ( MARGIN = 2)。這里,函式是\(x) head(sort(x, decreasing = T), 3),它按降序對列進行排序,并選擇前三個值 ( head(x, 3))。
apply(df1, 2, \(x) head(sort(x, decreasing = T), 3))
a b c d e
[1,] 5 10 5 10 5
[2,] 4 9 4 9 4
[3,] 3 8 3 8 3
注意:是4.1.0 以來類似lambda 函式\(x)的簡寫。function(x)
uj5u.com熱心網友回復:
我們可以sort,然后使用head:
head(apply(df1, 2, sort, decreasing = TRUE), 3)
# a b c d e
# [1,] 5 10 5 10 5
# [2,] 4 9 4 9 4
# [3,] 3 8 3 8 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/454056.html
上一篇:如何就地實作堆排序?
