Chapter 6 functions
函数是R语言的一级公民,只要有响应的地方都是有函数在执行。
6.1 函数的定义
6.2 返回函数的函数
6.3 df 相关函数
6.3.1 横向合并表格(cbind/merge)
# 如果合并依赖的列没有重复值
=data.frame(
courseid=c(101,102,100),
course=c("math", "english", "IT"),
row.names =paste0("v1_", 1:3)
) course
## id course
## v1_1 101 math
## v1_2 102 english
## v1_3 100 IT
=data.frame(
scoresid=c(1,2,2),
cid=c(100,101,102),
value=c(100,91,82),
row.names =paste0("v2_", 1:3)
) score
## sid cid value
## v2_1 1 100 100
## v2_2 2 101 91
## v2_3 2 102 82
# 如果不做检查校验,直接简单拼接
cbind(course, score)
## id course sid cid value
## v1_1 101 math 1 100 100
## v1_2 102 english 2 101 91
## v1_3 100 IT 2 102 82
# 如果需要按某一列合并,比如学生不同科目的成绩
=merge(course, score, by.x="id", by.y="cid"); m1 # 基于没重复值的列 merge后,行数不变,失去 rowname m1
## id course sid value
## 1 100 IT 1 100
## 2 101 math 2 91
## 3 102 english 2 82
# 如果有重复值,行数会变多,返回的是基于该同值的行的各种组合
=data.frame(
studentid=c(1,2, 1), #身份证
name=c("Jack", "Robin", "Jack2") #教职员工考的在职研究生
) student
## id name
## 1 1 Jack
## 2 2 Robin
## 3 1 Jack2
merge(student, score, by.x='id', by.y="sid")
## id name cid value
## 1 1 Jack 100 100
## 2 1 Jack2 100 100
## 3 2 Robin 101 91
## 4 2 Robin 102 82