《R数据科学实战:工具详解与案例分析 》 —2.2.4 add_row/column—实用小工具
2.2.4 add_row/column—实用小工具
在微软的Excel中,用户可以随意插入或者删除一行/列数据,add_row/column函数也为R用户提供了类似的功能。使用baseR来完成新增列的需求相对来说很简单。下面的代码首先创建了一个“tbl”,然后使用“$”来为数据新增一列名为“k”的变量,变量的数值为3、2、1:
> f <- tibble(i = 1:3,j = c("John","Sam","Joy"))
> f
## # A tibble: 3 x 2
## i j
## <int> <chr>
## 1 1 John
## 2 2 Sam
## 3 3 Joy
> f$k <- 3:1
> f
## # A tibble: 3 x 3
## i j k
## <int> <chr> <int>
## 1 1 John 3
## 2 2 Sam 2
## 3 3 Joy 1
在数据框的末尾加入一行新数据也可以实现新增列的功能,不过该功能需要读者对R的基本理论有一定的理解。如下代码所示,延续数据框“f”,配合使用函数“[”和“nrow”可在数据框的末尾新增一行数据。“nrow”的功能是计算对象的行数。
> f[nrow(f)+1, ] <- c(4,"Jon",0)
> f
## # A tibble: 4 x 3
## i j k
## * <chr> <chr> <chr>
## 1 1 John 3
## 2 2 Sam 2
## 3 3 Joy 1
## 4 4 Jon 0
小知识
中括号紧跟在数据框后面,可以作为索引来选择数据框中的特定数值。逗号前面为行索引,后面为列索引:[行,列]。读者可以试着配合“ncol”函数,以类似新增行的方式来为“f”新增一列。
tibble包中这两个实用的小函数,可以随时随地任意新增行列数据到指定位置,而不是像baseR中的命令那样只能在数据尾部或已有变量后面新增行或列,在还不是很熟悉R的各种符号代码之前,这两个函数是可以帮助用户快速有效地解决实际问题的。
下面的代码为“f”又新增了一行数据,不过因为这里仅指定了两个变量的值,所以对于未指定的部分,系统将自动填入默认值,具体代码如下:
> add_row(f,i = 4,j = "Jon")
## # A tibble: 5 x 3
## i j k
## <chr> <chr> <chr>
## 1 1 John 3
## 2 2 Sam 2
## 3 3 Joy 1
## 4 4 Jon 0
## 5 4 Jon <NA>
在第三行之前插入一行新数据,代码如下:
> add_row(f,i = 4,j = "Jon",.before = 3)
## # A tibble: 5 x 3
## i j k
## <chr> <chr> <chr>
## 1 1 John 3
## 2 2 Sam 2
## 3 4 Jon <NA>
## 4 3 Joy 1
## 5 4 Jon 0
第一行之后插入新数据,代码如下:
> add_row(f,i = 4,j = "Jon",.after = 1)
## # A tibble: 5 x 3
## i j k
## <chr> <chr> <chr>
## 1 1 John 3
## 2 4 Jon <NA>
## 3 2 Sam 2
## 4 3 Joy 1
## 5 4 Jon 0
在第一列之后插入新变量,代码如下:
> add_column(f,l = nrow(f):1,.after = 1)
## # A tibble: 4 x 4
## i l j k
## <chr> <int> <chr> <chr>
## 1 1 4 John 3
## 2 2 3 Sam 2
## 3 3 2 Joy 1
## 4 4 1 Jon 0
- 点赞
- 收藏
- 关注作者
评论(0)