1

2 つのデータ フレームがあります。それぞれに 2 つの列があります。最初の df には NA 値がなく、2 番目の df には最初の列に NA 値があります。例:

> myA
     Foo Bar
1   blue   G
2  brown   I
3  black   F
4   pink   D
5  green   H
6 orange   J
7 purple   K
8    red   C
> myB
  Foo Bar
1  NA   A
2  NA   B
3  NA   E

次のように、rbind を使用して結合します。

> newdata <- rbind(myA, myB)
> newdata
      Foo Bar
1    blue   G
2   brown   I
3   black   F
4    pink   D
5   green   H
6  orange   J
7  purple   K
8     red   C
9    <NA>   A
10   <NA>   B
11   <NA>   E

次に、2 番目の列で order を使用してその df を並べ替え、次を取得します。

> newSorted <- newdata[order(newdata$Bar),]
> newSorted
      Foo Bar
8     red   C
4    pink   D
3   black   F
1    blue   G
5   green   H
2   brown   I
6  orange   J
7  purple   K
9    <NA>   A
10   <NA>   B
11   <NA>   E

行われたように見えるのは、元の各 df を 2 番目の列で並べ替え、新しい df をセグメント化することです。それは私が達成したいことではありません。order が na.last の引数を取ることは知っていますが、NA 値は最初の列にありますが、2 番目の列で並べ替えるように求めています。私は手に入れたい:

Foo      Bar
<NA>     A
<NA>     B
red      C
pink     D
<NA>     E
black    F
blue     G
green    H
brown    I
orange   J
purple   K

このヘルプのリクエストの形式やスタイルが正しくない場合は、あらかじめお詫び申し上げます。これは、stackoverflow に関する私の最初の投稿です。

何が欠けているか、またはこれを行う方法について何か提案はありますか?

4

1 に答える 1

2

変数が因子である場合は、ito 文字を変更します。

 newdata[] <- lapply(newdata, as.character)
 newdata[order(newdata$Bar),]
        Foo Bar
  11   <NA>   A
  21   <NA>   B
  8     red   C
  4    pink   D
  31   <NA>   E
  3   black   F
  1    blue   G
  5   green   H
  2   brown   I
  6  orange   J
  7  purple   K
于 2014-06-28T07:07:04.830 に答える