R语言pivot_longer函数中date前“-”的作用及相关疑问
关于pivot_longer函数的两个常见疑问解答
1. 参数中-date和date的区别
在pivot_longer()里,这两种写法是用来明确哪些列要参与长表转换的:
- 写
cols = date:只把date列作为需要“拆解”的列,其他列会原封不动保留为标识列,最终date的内容会被拆成键(默认列名name)和值(默认列名value)的形式。 - 写
cols = -date:排除date列,把除了date之外的所有列都作为要拆解的对象,date列会保留为标识列,其他列的列名和对应值会被整合到新的键值列中。
举个实际数据的例子:
原宽表数据:
df <- data.frame( date = c("2023-01-01", "2023-01-02"), apple = c(5,7), banana = c(3,4) )
用pivot_longer(cols = date)的结果:
| apple | banana | name | value |
|---|---|---|---|
| 5 | 3 | date | 2023-01-01 |
| 7 | 4 | date | 2023-01-02 |
用pivot_longer(cols = -date)的结果:
| date | name | value |
|---|---|---|
| 2023-01-01 | apple | 5 |
| 2023-01-01 | banana | 3 |
| 2023-01-02 | apple | 7 |
| 2023-01-02 | banana | 4 |
2. values_to = "count"里的count是什么
这里的count是转换后新生成的列名,用来统一存放原来宽表中被拆解列的数值。它不是你CSV文件里已有的列,是pivot_longer()专门创建的列,用来替代默认的value列名,让结果列名更贴合你的业务含义。
比如上面的例子里,如果写pivot_longer(cols = -date, values_to = "count"),结果就会变成:
| date | name | count |
|---|---|---|
| 2023-01-01 | apple | 5 |
| 2023-01-01 | banana | 3 |
| 2023-01-02 | apple | 7 |
| 2023-01-02 | banana | 4 |
内容的提问来源于stack exchange,提问作者nurm
相关产品推荐
相关产品推荐

