【问题标题】:R order columns in a two-way table based on Row valuesR 根据行值对双向表中的列进行排序
【发布时间】:2021-08-19 08:21:08
【问题描述】:

我正在尝试根据行值对我创建的双向表中的列进行排序。 我已将双向表保存为表,因此将其放入数据框中(我正在使用 R)。 下面的代码应该根据内置的 Iris 数据创建一个双向表。

在我给出的示例中,请参见附图,如果您根据第一行对列进行排序,则列顺序应为 setosa、virginica、Versicolor。 第二行将排序列virginica、Versicolor、Setosa。 第三行将列排序为 Versicolor、virginica、setosa。 到目前为止,我唯一的解决方案是WinEUref19[,order(WinEUref19[nrow(WinEUref19),])],但这只能做最后一行,是否可以按第二行或第一行对列进行排序?

可复制代码:

Data <- iris
Data $ var2 <- iris $ Species
Data $ var2 <- sample(Data $ var2)
Df <-table(Data $ var2, iris $ Species)
rownames(Df) <- c("Row one","Row two", "Row three")
Df

            setosa versicolor virginica
  Row one       14         19        17
  Row two       22         15        13
  Row three     14         16        20

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    是的,您可以按任意行订购。只需计算值的顺序并将结果向量设置为列的选择标准。

    > Df[,order(Df[1,])]
               
                setosa versicolor virginica
      Row one       15         17        18
      Row two       18         15        17
      Row three     17         18        15
    
    > Df[,order(Df[2,])]
               
                versicolor virginica setosa
      Row one           17        18     15
      Row two           15        17     18
      Row three         18        15     17
    
    > Df[,order(Df[3,])]
               
                virginica setosa versicolor
      Row one          18     15         17
      Row two          17     18         15
      Row three        15     17         18
    

    【讨论】:

      【解决方案2】:

      你基本上已经有了答案。您可以像这样按第一行对表格进行排序:

      Df[,order(Df[1,])]

      第二行是这样的:

      Df[,order(Df[2,])]

      等等。

      【讨论】:

        猜你喜欢
        • 2023-03-19
        • 2012-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-05
        • 1970-01-01
        • 2020-06-02
        • 1970-01-01
        相关资源
        最近更新 更多