如何使用 pivot_longer 和 names_pattern 学习分组功能
How do I learn the grouping function with pivot_longer and names_pattern
我正在尝试处理 pivot_longer
中的 names_pattern
参数,但我不确定我是否理解分组功能及其工作原理。我需要旋转以下数据框以匹配下面所需的输出。
df<-structure(list(Weighted_Ideology =0.514, Weighted_Ideology_se = 0.00, Unweighted_Ideology = 0.51, Unweighted_Ideology_se = 0.004), row.names = c(NA, -1L), class = "data.frame")
library(tidyr)
df%>%
pivot_longer(., cols=everything(), names_to=c('Variable', ".value"), names_pattern="([a-z]+_[a-z]+)_(.*)")
期望的输出
df2<-data.frame(
Variable=c('Weighted', "Unweighted"),
Ideology=c(0.54, 0.51),
se=c(0.005, 0.004)
)
更改 names_pattern
以将列名开头 (^
) 以外的非 _
字符作为一组捕获,后跟 _
然后捕获其余字符 ((.*)
)
library(dplyr)
library(tidyr)
df %>%
pivot_longer(cols = everything(), names_to = c("Variable", ".value"),
names_pattern = "^([^_]+)_(.*)")%>%
rename(se = Ideology_se)
-输出
# A tibble: 2 × 3
Variable Ideology se
<chr> <dbl> <dbl>
1 Weighted 0.514 0
2 Unweighted 0.51 0.004
[a-z]+
仅表示小写字符,而在列名中,有大写起始字符 (W
eighted_I
deology)。当有多个 _
并且我们想要在特定的 _
处拆分时,匹配上述解决方案中 _
([^_]+
) 以外的字符可能会更好
我正在尝试处理 pivot_longer
中的 names_pattern
参数,但我不确定我是否理解分组功能及其工作原理。我需要旋转以下数据框以匹配下面所需的输出。
df<-structure(list(Weighted_Ideology =0.514, Weighted_Ideology_se = 0.00, Unweighted_Ideology = 0.51, Unweighted_Ideology_se = 0.004), row.names = c(NA, -1L), class = "data.frame")
library(tidyr)
df%>%
pivot_longer(., cols=everything(), names_to=c('Variable', ".value"), names_pattern="([a-z]+_[a-z]+)_(.*)")
期望的输出
df2<-data.frame(
Variable=c('Weighted', "Unweighted"),
Ideology=c(0.54, 0.51),
se=c(0.005, 0.004)
)
更改 names_pattern
以将列名开头 (^
) 以外的非 _
字符作为一组捕获,后跟 _
然后捕获其余字符 ((.*)
)
library(dplyr)
library(tidyr)
df %>%
pivot_longer(cols = everything(), names_to = c("Variable", ".value"),
names_pattern = "^([^_]+)_(.*)")%>%
rename(se = Ideology_se)
-输出
# A tibble: 2 × 3
Variable Ideology se
<chr> <dbl> <dbl>
1 Weighted 0.514 0
2 Unweighted 0.51 0.004
[a-z]+
仅表示小写字符,而在列名中,有大写起始字符 (W
eighted_I
deology)。当有多个 _
并且我们想要在特定的 _
处拆分时,匹配上述解决方案中 _
([^_]+
) 以外的字符可能会更好