我是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
提前致谢。
答案 0 :(得分: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
这是将数据从(稍微)长格式更改为深层格式,您可以找到有关如何处理此任务的更多详细信息here。
答案 1 :(得分: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