[英]column names per row top 3 dataframe R
假設我們在R中具有以下數據幀:
DF <- as.data.frame.matrix(matrix(sample(1:15,15),ncol=5,nrow=3))
V1 V2 V3 V4 V5
1 15 8 3 14 4
2 11 2 5 13 6
3 9 7 10 12 1
我正在嘗試檢索每行的前三個值的列名。 我想獲得一個包含以下信息的新數據框:
1 V1 V4 V2
2 V4 V1 V5
3 V4 V3 V1
我嘗試使用apply和dapply,但無法正常工作。 我設計了一個可在apply中使用的函數,但未按預期工作。 你能給我任何解決這個問題的提示嗎? 我認為這應該有所幫助。
我們可以遍歷各行( apply
於MARGIN=1
),使用order
遞減該行中元素的數字索引,使用該索引對列名進行order
,使用head
獲取前3個元素,轉置輸出並轉換為data.frame
。
as.data.frame(t(apply(DF, 1, function(x)
head(names(DF)[order(-x)],3))), stringsAsFactors=FALSE)
# V1 V2 V3
#1 V1 V4 V2
#2 V4 V1 V5
#3 V4 V3 V1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.