我是一個R和堆棧溢出新手,所以希望我在這裏遵循協議。R變換數據框(分組)
如何轉變就像一個數據幀:提前
NAME AGE APPLES ORANGES
Joe 13 5 6
Mary 10 2 4
感謝:
FRUIT NUMBER NAME AGE
apples 5 Joe 13
oranges 6 Joe 13
apples 2 Mary 10
oranges 4 Mary 10
到分組數據成名等。
我是一個R和堆棧溢出新手,所以希望我在這裏遵循協議。R變換數據框(分組)
如何轉變就像一個數據幀:提前
NAME AGE APPLES ORANGES
Joe 13 5 6
Mary 10 2 4
感謝:
FRUIT NUMBER NAME AGE
apples 5 Joe 13
oranges 6 Joe 13
apples 2 Mary 10
oranges 4 Mary 10
到分組數據成名等。
您可以使用包reshape2
中的函數dcast
。
> 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更多細節。
完美。非常感謝 – kc2819
使用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
您好,歡迎來SO!感謝您發佈最小示例數據集和您期望的答案,因爲您提到了SO協議,因此您可以閱讀[關於Stackoverflow](http://stackoverflow.com/about)和[請問](http:// stackoverflow.com/help/on-topic)。如果你表明你已經嘗試過自己,那麼人們通常更願意提供幫助,例如你迄今試過的代碼以及爲什麼它不起作用。乾杯。 – Henrik