一健小事

一蚊有難,百方支援。

R and Ronald (3):重組data frame

這篇再介紹重組data frame。

首先製作一個叫roster的data frame:

options(digits=2)

Student

Math

Science

English

roster

roster

             Student Math Science English
1         John Davis  502      95      25
2    Angela Williams  600      99      22
3   Bullwinkle Moose  412      80      18
4        David Jones  358      82      15
5  Janice Markhammer  495      75      20
6     Cheryl Cushing  512      85      28
7     Reuven Ytzrhak  410      80      15
8          Greg Knox  625      95      30
9       Joel England  573      89      27
10      Mary Rayburn  522      86      18

Objective:

#1. combine subject test scores into a single performance indicator for each student

#2. grade each student from A to F based on their relative standing (top 20 percent, next 20 percent, etc.)

#3. sort the roster by students’ last name, followed by first name

#1. 首先,要scale三個項目的分數,計算每位學生的平均得分。

z

score

roster

roster

             Student Math Science English score
1         John Davis  502      95      25  0.56
2    Angela Williams  600      99      22  0.92
3   Bullwinkle Moose  412      80      18 -0.86
4        David Jones  358      82      15 -1.16
5  Janice Markhammer  495      75      20 -0.63
6     Cheryl Cushing  512      85      28  0.35
7     Reuven Ytzrhak  410      80      15 -1.05
8          Greg Knox  625      95      30  1.34
9       Joel England  573      89      27  0.70
10      Mary Rayburn  522      86      18 -0.18

#2. 用cut劃分等級,注意order。

grade

roster

roster

             Student Math Science English score grade
1         John Davis  502      95      25  0.56     C
2    Angela Williams  600      99      22  0.92     A
3   Bullwinkle Moose  412      80      18 -0.86     F
4        David Jones  358      82      15 -1.16     F
5  Janice Markhammer  495      75      20 -0.63     F
6     Cheryl Cushing  512      85      28  0.35     D
7     Reuven Ytzrhak  410      80      15 -1.05     F
8          Greg Knox  625      95      30  1.34     A
9       Joel England  573      89      27  0.70     B
10      Mary Rayburn  522      86      18 -0.18     F

#3. 分開學生名字為last name及first name。然後刪除name。

name

firstname

lastname

roster

roster

 

    firstname   lastname Math Science English score grade
1        John      Davis  502      95      25  0.56     C
2      Angela   Williams  600      99      22  0.92     A
3  Bullwinkle      Moose  412      80      18 -0.86     F
4       David      Jones  358      82      15 -1.16     F
5      Janice Markhammer  495      75      20 -0.63     F
6      Cheryl    Cushing  512      85      28  0.35     D
7      Reuven    Ytzrhak  410      80      15 -1.05     F
8        Greg       Knox  625      95      30  1.34     A
9        Joel    England  573      89      27  0.70     B
10       Mary    Rayburn  522      86      18 -0.18     F

#4. 再按last name排序。如果last name相同,就按first name排序。

roster

roster

    firstname   lastname Math Science English score grade
6      Cheryl    Cushing  512      85      28  0.35     D
1        John      Davis  502      95      25  0.56     C
9        Joel    England  573      89      27  0.70     B
4       David      Jones  358      82      15 -1.16     F
8        Greg       Knox  625      95      30  1.34     A
5      Janice Markhammer  495      75      20 -0.63     F
3  Bullwinkle      Moose  412      80      18 -0.86     F
10       Mary    Rayburn  522      86      18 -0.18     F
2      Angela   Williams  600      99      22  0.92     A
7      Reuven    Ytzrhak  410      80      15 -1.05     F

#Transpose

cars

t(cars)

#Reshape

ID

Time

X1

X2

mydata

mydata

 

  ID Time X1 X2
1  1    1  5  6
2  1    2  3  5
3  2    1  6  1
4  2    2  2  4

melt:由闊變長,如燒熔金屬 cast:由長變濶,打金屬入模   library(reshape) md md  

  ID Time variable value
1  1    1       X1     5
2  1    2       X1     3
3  2    1       X1     6
4  2    2       X1     2
5  1    1       X2     6
6  1    2       X2     5
7  2    1       X2     1
8  2    2       X2     4

#Reshape without aggregation

The format is newdata

The formula takes the form rowvar1 + rowvar2 + … ~ colvar1 + colvar2 + …

rowvar可以當作是ID變項

cmd

cmd

  ID Time X1 X2
1  1    1  5  6
2  1    2  3  5
3  2    1  6  1
4  2    2  2  4

#Reshape with aggregation

The format is newdata

cmd2

cmd2

  ID X1  X2
1  1  4 5.5
2  2  4 2.5

參考網址:http://seananderson.ca/2013/10/19/reshape.html

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

Information

This entry was posted on 2015/01/25 by in Uncategorized and tagged , .

網誌統計

  • 71,589 點擊次數
京都・耆學帖

一蚊有難,百方支援。

William on the way

…………我,在途上,義無反顧…………

Shenzhen Noted

blogging urban change since 2005

窮游破事兒

遊記、時評、採訪心得、滄海遺珠

思敏愛南洋

I Am Sze Ming Lee

東亞新觀點

走入亞洲,專門關注東亞國際政經動態

失去。擁有

人一直在尋求依賴,我們太害怕未知,寧願選擇一成不變。到頭來,其實我們從來都是一個人。

looking for the story that matters

續尋。留聲的一二事 | 方欣浩

基進報導

為無權者充權

死也要去旅行

一個精算師, 在香港返工太沉悶, 不習慣在一個地方呆得太久. 最近, 跟公司請了半年假, 決定要用一雙腳踏遍南美洲的土地

凍啡走甜

Justin Yip。第四代香港人。好懶醒,自大又自卑。面前有珍饈百味,但總覺隔離飯香。

Awesome Life

If you are adventurous in your choices, you’ll have a lot more fun and excitement

0987255046o

A modern business theme

%d 位部落客按了讚: