r中宽数据转为长数据函数
时间: 2024-09-21 07:13:37 浏览: 60
在R语言中,将宽格式(wide format)的数据转换为长格式(long format),通常是为了更好地处理分析,特别是时间序列数据或面板数据(每个观测值都有多个变量)。这种转换常用的是`tidyr`包中的`gather()`或`pivot_longer()`函数。
如果你有一个数据框(data frame)结构如下:
```r
# 宽格式示例
df_wide <- data.frame(
id = c("A", "B", "C"),
time1 = c(1, 2, 3),
value1 = c(10, 20, 30),
time2 = c(4, NA, 6),
value2 = c(40, NA, 60)
)
```
你可以使用`gather()`或`pivot_longer()`将其转换为长格式:
```r
library(tidyr)
# 使用 gather()
df_long <- gather(df_wide, key = "time", value = "value", -id)
# 或者使用 pivot_longer()
df_long <- pivot_longer(df_wide, cols = starts_with("time"), names_to = "time", values_to = "value")
# 结果:
# id time value
# 1 A 1 10
# 2 B 2 20
# 3 C 3 30
# 4 A 4 40
# 5 C 6 60
```
这样每个观测值(row)就有了一个独立的时间列和对应的值列。
阅读全文