我正在嘗試處理names_patternagument pivot_longer,但我不確定我是否了解分組功能及其作業原理。我需要旋轉以下資料框以匹配下面所需的輸出。
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)
)
uj5u.com熱心網友回復:
更改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] 意味著只有小寫字符,而在列名,有上殼體起始字符(Weighted_ Ideology)。當有多個_并且我們想在特定位置拆分時_,最好匹配_( [^_] )以外的字符,如上面的解決方案
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/312495.html
上一篇:使用十六進制代碼更改RMarkdownPDF(R)中的文本顏色
下一篇:如何計算r中兩列之間的差距
