【发布时间】:2020-10-25 00:55:27
【问题描述】:
假设我有这段代码试图从 df 中提取 x 和 y:
df <- data.frame(
num = c(1,2),
x_cap = c(4,5),
x_cap_rolling = c(4.4,5.5),
y_cap = c(7,8),
y_cap_rolling = c(7.7,8.8)
)
df_long <- df %>% pivot_longer(cols=!num,
names_pattern = "(.+)_cap",
names_to = "type", values_to="cap")
得到:
> df_long
# A tibble: 8 x 3
num type cap
<dbl> <chr> <dbl>
1 1 x 4
2 1 x 4.4
3 1 y 7
4 1 y 7.7
5 2 x 5
6 2 x 5.5
7 2 y 8
8 2 y 8.8
嗯,关闭,但我希望 cap 4 的类型为“x”,而 cap 4.4 的类型为“x_rolling”,依此类推。
以下是一些失败的尝试:
df_long <- df %>% pivot_longer(cols=!num,
names_pattern = "(.+)_cap(_rolling)*",
names_to = "type", values_to="cap")
df_long <- df %>% pivot_longer(cols=!num,
names_pattern = "(.+)_cap(.*)",
names_to = "type", values_to="cap")
每个都返回错误:
Error: `regex` should define 1 groups; found.
我不明白这个错误。
如何在相应的行提取类型为 x、x_rolling、y、y_rolling 的结果?
【问题讨论】: