網頁

2020年4月20日 星期一

R語言 Dataframe 操作

匯入 csv檔
假設有一學生成績資料 score.csv,用R語言匯入 csv檔:
score = read.csv("~/prog/r/score.csv", header=T, sep=",")
輸入 score 查看內容,共有5筆學生資料

增加一個欄位方式:
加上地理科成績,欄位名稱 S.Geography
score$S.Geography = c(78, 67, 89, 77, 86, 90)

計算並增加 Sum. 和 Avg. 欄位存放每個學生的成績總分和平均
sum_field = c()
avg_field = c()

for ( i in 1:nrow(score)) {  #nrow(score)取得score資料行數
    summary = sum(score[i, 3:5])
    sum_field[i] = summary
    avg = summary / 3
    avg_field[i] = round(avg, 2)   #浮點數取到小數點2位
}

score$Sum. <- sum_field
score$Avg. <- avg_field 


或是用 apply 會更簡單
score$Sum. <- apply(score[, 3:5], 1, sum)
score$Avg. <- round(apply(score[, 3:5], 1, mean), 2) 



刪除特定行的資料
例如要刪除學生 Chang 或 Lin 的資料
可以用 grep 找出符合條件的資料行
score[grep("Chang|Lin", score$Name), ]

要刪除只要前面加上"-"號即可
score[-grep("Chang|Lin", score$Name), ]

排序方式
依照學生成績總分排序(升序)
score[order(score$Sum), ]

依照學生成績總分排序(降序),只要加個 "-" 號就可以
score[order(-score$Sum), ]

最大值最小值
找出成績最好的資料和最差的資料:
score[which.max(score$Avg.[]), ]
score[which.min(score$Avg.[]), ]





沒有留言:

張貼留言