2 20 94
17 #删除df第3行 ( df <- df[-3,] )
18 > df.tmp <- df[-3,]
19 > df.tmp
20 ID Class Chinese Math English
21 1 1 2 65 59 23
22 2 2 2 37 38 45
23 4 4 1 90 49 87
24 5 5 2 20 71 34
25 6 6 3 89 99 46
26 7 7 1 94 38 87
27 8 8 2 66 77 95
28 9 9 3 62 93 43
29 10 10 1 20 21 76
30 11 11 2 20 65 23
31 12 12 3 20 12 94
五、添加
1、添加行
data.frame[新行号,] <- 行值
1 > df[13,] <- c(13,2,62,19,38) #新增13行数据
2 > df
3 ID Class Chinese Math English
4 1 1 2 65 59 23
5 2 2 2 37 38 45
6 3 3 3 65 76 67
7 4 4 1 90 49 87
8 5 5 2 20 71 34
9 6 6 3 89 99 46
10 7 7 1 94 38 87
11 8 8 2 66 77 95
12 9 9 3 62 93 43
13 10 10 1 20 21 76
14 11 11 2 20 65 23
15 12 12 3 20 12 94
16 13 13 2 62 19 38
若想对行进行复制,可以采用重复行号的方法
1 > df <- df[c(1,1:12),] #复制第1行1次
2 > df
3 ID Class Chinese Math English
4 1 1 2 65 59 23
5 1.1 1 2 65 59 23
6 2 2 2 37 38 45
7 3 3 3 65 76 67
8 4 4 1 90 49 87
9 5 5 2 20 71 34
10 6 6 3 89 99 46
11 7 7 1 94 38 87
12 8 8 2 66 77 95
13 9 9 3 62 93 43
14 10 10 1 20 21 76
15 11 11 2 20 65 23
16 12 12 3 20 12 94
可使用rep()函数方便进行多行的复制
1 > df <- df[rep(1:12,each = 2),] #对每行数据复制1次
2 > df
3 ID Class Chinese Math English
4 1 1 2 65 59 23
5 1.1 1 2 65 59 23
6 2 2 2 37 38 45
7 2.1 2 2 37 38 45
8 3 3 3 65 76 67
9 3.1 3 3 65 76 67
10 4 4 1 90 49 87
11 4.1 4 1 90 49 87
12 5 5 2 20 71 34
13 5.1 5 2 20 71 34
14 6 6 3 89 99 46
15 6.1 6 3 89 99 46
16 7 7 1 94 38 87
17 7.1 7 1 94 38 87
18 8 8 2 66 77 95
19 8.1 8 2 66 77 95
20 9 9 3 62 93 43
21 9.1 9 3 62 93 43
22 10 10 1 20 21 76
23 10.1 10 1 20 21 76
24 11 11 2 20 65 23
25 11.1 11 2 20 65 23
26 12 12 3 20 12 94
27 12.1 12 3 20 12 94
还可采用rbind()函数,后续会有示例
2、添加列
data.frame$新列名 <- 列值
1 > df$Physics <- c(23,34,67,23,56,67,78,23,54,56,67,34)
2 > df
3 ID Class Chinese Math English Physics
4 1 1 2 65 59 23 23
5 2 2 2 37 38 45 34
6 3 3 3 65 76 67 67
7 4 4 1 90 49 87 23
8 5 5 2 20 71 34 56
9 6 6 3 89 99 46 67
10 7 7 1 94 38 87 78
11 8 8 2 66 77 95 23
12 9 9 3 62 93 43 54
13 10 10 1 20 21 76 56
14 11 11 2 20 65 23 67
15 12 12 3 20 12 94 34
data.frame[,新列号] <- 列值
1 > df[,7] <- c(1:12)
2 > df
3 ID Class Chinese Math English Physics V7
4 1 1 2 65 59 23 23 1
5 2 2 2 37 38 45 34 2
6 3 3 3 65 76 67 67 3
7 4 4 1 90 49 87 23 4
8 5 5 2 20 71 34 56 5
9 6 6 3 89 99 46 67 6
10 7 7 1 94 38 87 78 7
11 8 8 2 66 77 95 23 8
12 9 9 3 62 93 43 54 9
13 10 10 1 20 21 76 56 10
14 11 11 2 20 65 23 67 11
15 12 12 3 20 12 94 34 12
还可用dplyr包中的mutate()函数
1 > mutate(df,Chemistry = Chinese + Math + English + Physics)
2 ID Class Chinese Math English Physics V7 Chemistry
3 1 1 2 65 59 23 23 1 170
4 2 2 2 37 38 45 34 2 154
5 3 3 3 65 76 67 67 3 275
6 4 4 1 90 49 87 23 4 249
7 5 5 2 20 71 34 56 5 181
8 6 6 3 89 99 46 67 6 301
9 7 7 1 94 38 87 78 7 297
10 8 8 2 66 77 95 23 8 261
11 9 9 3 62 93 43 54 9 252
12 10 10 1 20 21 76 56 10 173
13 11 11 2 20 65 23 67 11 175
14 12 12 3 20 12 94 34 12 160
还可采用cbind()函数,后续会有示例
六、dplyr包常用函数
1 > df #原数据
2 ID Class Chinese Math English
3 1 1 2 65 59 23
4 2 2 2 37 38 45
5 3 3 3 65 76 67
6 4 4 1 90 49 87
7 5 5 2 20 71 34
8 6 6 3 89 99 46
9 7 7 1 94 38 87
10 8 8 2 66 77 95
11 9 9 3 62 93 43
12 10 10 1 20 21 76
13 11 11 2 20 65 23
14 12 12 3 20 12 94
1、arrange() 排序
arrange(.data, ...)
arrange(.data, ..., .by_group = FALSE)
1 > arrange(df,Chinese) #按语文成绩由小到大排序
2 ID Class Chinese Math English
3 1 5 2 20 71 34
4 2 10 1 20 21 76
5 3 11 2 20 65 23
6 4 12 3 20 12 94
7 5 2 2 37 38 45
8 6 9 3 62 93 43
9 7 1 2 65 59 23
10 8 3 3 65 76 67
11 9 8 2 66 77 95
12 10 6 3 89 99 46
13 11 4 1 90 49 87
14 12 7 1 94 38 87
函数中第一个是待排序的数据框,之后依次是变量,且变量优先级逐渐降低,如语文、数学成绩进行排序
1 > arrange(df,Chinese,Math) #依次按语文、数学成绩由小到大排序
2 ID Class Chinese Math English
3 1 12 3 20 12 94
4 2 10 1 20 21 76
5 3 11 2 20 65 23
6 4 5 2 20 71 34
7 5 2 2 37 38 45
8 6 9 3 62 93 43
9 7 1 2 65 59 23
10 8 3 3 65 76 67
11 9 8 2 66 77 95
12 10 6 3 89 99 4