0

私は R とスタック オーバーフローの初心者なので、ここでプロトコルに従っていることを願っています。

次のようなデータ フレームを変換するにはどうすればよいですか。

FRUIT   NUMBER  NAME    AGE
apples  5       Joe     13
oranges 6       Joe     13
apples  2       Mary    10
oranges 4       Mary    10

次のようなグループ化されたデータ フェームに変換します。

NAME    AGE  APPLES ORANGES
Joe     13   5       6
Mary    10   2       4

前もって感謝します。

4

2 に答える 2

2

dcastパッケージの関数を使用できますreshape2

> library('reshape2')
> d <- read.table(header=T, text="FRUIT   NUMBER  NAME    AGE
+ apples  5       Joe     13
+ oranges 6       Joe     13
+ apples  2       Mary    10
+ oranges 4       Mary    10");


> dcast(d, NAME + AGE ~ FRUIT, value.var='NUMBER')
  NAME AGE apples oranges
1  Joe  13      5       6
2 Mary  10      2       4

これは、(やや) 長い形式から深い形式へのデータの変更です。このタスクへのアプローチ方法の詳細については、こちらを参照してください

于 2013-11-09T20:51:09.723 に答える
0

使用sqldf:

library(sqldf)
sqldf('SELECT NAME, AGE,
      MAX(CASE WHEN FRUIT = "apples" THEN NUMBER ELSE NULL END) apples, 
      MAX(CASE WHEN FRUIT = "oranges" THEN NUMBER ELSE NULL END) oranges
      FROM d 
      GROUP BY NAME 
      ORDER BY NAME')

出力:

  NAME AGE apples oranges
1  Joe  13      5       6
2 Mary  10      2       4
于 2015-07-14T17:15:55.397 に答える