[英]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.