←
PDF 185 / 520 Unite
→
English · PDF 185
Original PDF page 185
中文 · PDF 185

#> 5 中国 1999 212258 1272915272 #> 6 中国 2000 213766 1280428583

你还可以向 sep 传递一个整数向量。separate() 会将这些整数解释为拆分的位置。正值从字符串最左侧的 1 开始计数;负值从字符串最右侧的 –1 开始计数。使用整数来分隔字符串时,sep 的长度应该比 into 中名称的数量少一。

你可以使用这种设置来分离每个年份的最后两位数字。这会使数据变得不那么整洁,但在其他情况下很有用,稍后你会看到:

table3 %>% separate(year, into = c("century", "year"), sep = 2) #> # A tibble: 6 × 4 #> country century year rate #> * #> 1 Afghanistan 19 99 745/19987071 #> 2 Afghanistan 20 00 2666/20595360 #> 3 Brazil 19 99 37737/172006362 #> 4 Brazil 20 00 80488/174504898 #> 5 China 19 99 212258/1272915272 #> 6 China 20 00 213766/1280428583

合并

unite() 是 separate() 的逆操作:它将多个列合并为一个列。你使用它的频率会比 separate() 低得多,但它仍然是一个值得掌握的实用工具。

我们可以使用 unite() 将上一个示例中创建的 century 和 year 列重新合并。该数据保存为 tidyr::table5。unite() 接受一个数据框、要创建的新变量的名称,以及要合并的一组列,同样使用 dplyr::select() 语法指定。结果如图 9-5 以及下面的代码所示:

table5 %>% unite(new, century, year) #> # A tibble: 6 × 3 #> country new rate #> * #> 1 Afghanistan 19_99 745/19987071 #> 2 Afghanistan 20_00 2666/20595360 #> 3 Brazil 19_99 37737/172006362 #> 4 Brazil 20_00 80488/174504898