首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中枢轴对列?

如何在R中枢轴对列?
EN

Stack Overflow用户
提问于 2021-10-07 18:31:19
回答 1查看 95关注 0票数 2

我很难转动成对的柱子。我理解有names_pattern的论点,我不知道如何使这个工作。

我的数据如下:

代码语言:javascript
复制
structure(list(Q8_1_avg = 4.72562264837839, Q8_1_avg_se = 0.0595342202500642, 
               Q8_1_unweighted = 4.90473815461347, Q8_2_avg = 4.65508494735021, 
               Q8_2_avg_se = 0.0541589332376175, Q8_2_unweighted = 4.6498753117207, 
               Q8_3_avg = 5.4756060523178, Q8_3_avg_se = 0.0534895224170486, 
               Q8_3_unweighted = 5.57506234413965), row.names = c(NA, -1L
               ), class = "data.frame")->dat

我想要的输出如下:

代码语言:javascript
复制
df<-data.frame(
Question=c('Q8_1', 'Q8_2','Q8_3'),
#Values taken from Q8_[123]_avg
Weighted_Average=c(4.72,4.65, 5.47),
#Values taken from Q8_[123]_avg_se
Weighted_SE=c(0.05,0.05 ,0.05),
#Values taken from Q8_[123]_unweighted
Unweighted_Average=c(4.90, 4.64, 5.57)
)
df

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-07 18:32:53

我们可以使用pivot_longer。如果需要,使用rename更改列名。将names_to指定为‘问号’的向量(返回列名的前缀部分),.value以长格式返回值。然后,在names_pattern中,捕获前缀部分,即一个或多个字符不是_ ([^_]+),后面是_和一些数字(\\d+)作为一个组((...)),然后是_和第二个捕获组,涉及其余字符((.*))。

代码语言:javascript
复制
library(dplyr)
library(tidyr)
dat %>% 
   pivot_longer(cols = everything(), names_to = c("Question", 
       ".value"), names_pattern = "^([^_]+_\\d+)_(.*)")
# A tibble: 3 × 4
  Question   avg avg_se unweighted
  <chr>    <dbl>  <dbl>      <dbl>
1 Q8_1      4.73 0.0595       4.90
2 Q8_2      4.66 0.0542       4.65
3 Q8_3      5.48 0.0535       5.58
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69486185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档