如何使用tidyr::separate拆分列:保留首个元素,其余元素合并
解决方案
要实现只拆分第一个斜杠,将后续内容保留斜杠合并为一列,只需给separate函数添加extra='merge'参数即可:
separate(df2, col=stats, into=c('points', 'assist'), sep='/', extra='merge')
原理说明
默认情况下,separate会按指定分隔符拆分所有匹配项,当拆分出的元素数量多于into参数指定的列数时,会触发警告并丢弃多余内容。而extra='merge'参数会将第一个分隔符之后的所有内容(包括剩余的斜杠)合并到最后一列,正好满足保留2/3这类格式的需求。
验证效果
运行上述代码后,数据框的结果如下:
| player | year | points | assist |
|---|---|---|---|
| A | 1 | 22 | 2/3 |
| A | 2 | 29 | 3/4 |
| B | 1 | 18 | 6/7 |
| B | 2 | 11 | 1/2 |
| C | 1 | 12 | 1/1 |
| C | 2 | 19 | 2/4 |
内容的提问来源于stack exchange,提问作者12666727b9
相关产品推荐
相关产品推荐

