【问题标题】:ranking elements of vectors in a data frame对数据框中向量的元素进行排序
【发布时间】:2014-05-25 21:05:24
【问题描述】:

请帮帮我,我有这个数据框:

df <- data.frame(G1=c("a","b","c","d","e"),
                 G2=c("a","c","b","d","e"),
                 G3=c("a","d","e","b","c"),
                 G4=c("a","b","c","d","e"))

我想制作另一个表格,显示从 G1 到 G4 的每个术语的位置,所以它看起来像这样:

rank <- data.frame(term=c("a","b","c","d","e"),
                   G1=c(1:5),
                   G2=c(1,3,2,4,5),
                   G3=c(1,4,5,2,3),
                   G4=c(1:3,4,5))

我的第二个问题:是否有一种图形方式来连接表格中的每个元素,比如“b”的箭头,从 [2,1] 到 [3,2] 到 [4,3] 到 [ 2,4)

谢谢!

编辑:

我已在原始数据框中应用了这些建议。这是一个例子:

df <- data.frame(G1=c("bta-let-7a-1","bta-let-7b", "bta-mir-26a-1", "bta-mir-21"), 
                 G2=c("bta-mir-21", "bta-let-7a-1", "bta-let-7b", "bta-mir-26a-1"),
                 G3=c("bta-mir-26a-1", "bta-mir-21", "bta-let-7a-1", "bta-let-7b"), 
                 G4=c("bta-let-7b","bta-mir-26a-1", "bta-mir-21", "bta-let-7a-1"))

问题是当我lapply时,列“G1”变成了“1”、“2”、“4”、“3”。

rank <- as.data.frame(lapply(df, as.integer))

但是,我将“G1”设置为“1”、“2”、“3”、“4”,其余列按照“G1”排列。例如,“G2”是“4”、“1”、“2”、“3”。 (这在我原来的表格中变得更加混乱)

【问题讨论】:

  • sapply(df, as.numeric)

标签: r ranking


【解决方案1】:

既然你已经有了因子,那么做起来很简单:

as.data.frame(lapply(df, as.integer))
#  G1 G2 G3 G4
#1  1  1  1  1
#2  2  3  4  2
#3  3  2  5  3
#4  4  4  2  4
#5  5  5  3  5

如果您想在编辑后的 ​​OP 中重新排序您的因素,一种方法是:

as.data.frame(lapply(lapply(df, function(x)
                  factor(as.character(x), as.character(df$G1))), as.integer))

【讨论】:

  • 对于第二部分,如果您加载 library(MASS),如果您按照 @eddi 的建议分配 rank &lt;- as.data.frame...,则可以执行 parcoord(rank)
  • 谢谢。我怎样才能看到术语“a”、“b”、“c”、“d”、“e”? (在表格和图表中?
  • @Sergio.pv 也许使用levels(unlist(df))?很难说提取该信息的最佳方法是什么(没有提供足够的信息),但它适用于 OP。
  • 我有一个非常大的名称列表(约 600 个名称),它们分 4 组分布在不同的位置(位置 1 到 ~600)。每组中的位置对于数据解释很重要,因此需要了解一个术语在四个组中如何变化。
  • @eddi 我尝试使用轴(2,at=0:4,labels=letters[1:5])。我没有得到每一行的输出“a”、“b”、“c”、“d”、“e”,只有图形底部的“a”和顶部的“b”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多