0

我是 R 和 Stack Overflow 的新手,所以希望我在这里遵循协议。

如何转换数据框,例如:

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

您可以使用dcastpackage中的功能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 回答