簡體   English   中英

每行列名稱前3個數據框R

[英]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中使用的函數,但未按預期工作。 你能給我任何解決這個問題的提示嗎? 我認為應該有所幫助。

我們可以遍歷各行( applyMARGIN=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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM