首页 > 解决方案 > 如何pivot_longer 变量名称中包含整数和变量的数据框?

问题描述

解决了。找到了解决我的问题的方法。

我有一个包含几个变量的数据框,每轮记录一次每个参与者。变量的存储方式如下:

# A tibble: 60 x 15
   slider_puzzle.1~ slider_puzzle.1~ slider_puzzle.1~ slider_puzzle.2~ slider_puzzle.2~
              <int> <lgl>                       <dbl>            <int> <lgl>           
 1               50 NA                             25               50 NA              
 2               60 NA                             25               80 NA              
 3               65 NA                             25               60 NA              
 4               80 NA                             25               65 NA              
 5               70 NA                             25               70 NA              
 6               65 NA                             25               70 NA              
 7               50 NA                             25               50 NA              
 8               50 NA                             25               50 NA              
 9               50 NA                             25               50 NA              
10               50 NA                             25               60 NA              
# ... with 50 more rows, and 10 more variables: slider_puzzle.2.player.payoff <dbl>,
#   slider_puzzle.3.player.claim <int>, slider_puzzle.3.player.gender <lgl>,
#   slider_puzzle.3.player.payoff <dbl>, slider_puzzle.4.player.claim <int>,
#   slider_puzzle.4.player.gender <lgl>, slider_puzzle.4.player.payoff <dbl>,
#   slider_puzzle.5.player.claim <int>, slider_puzzle.5.player.gender <chr>,
#   slider_puzzle.5.player.payoff <dbl>

我想旋转更长的时间,以便每个变量(player.claim、player.payoff、player.gender、...)都有一行,一行表示参与者,一行表示轮数(“slider.claim”后面的数字。谜。”)。

我尝试了以下方法:

    cc = cc %>% 
  pivot_longer(
  cols = 
    starts_with('slider_puzzle'), 
  names_to = c('round', '.value'),
  names_pattern = 'slider_puzzle.(.).(.)'
  )

但它不起作用。我不确定如何指定 names_pattern。任何帮助,将不胜感激!

标签: rregexpivottidyr

解决方案


它适用于以下 names_pattern:

cc = cc %>% 
  pivot_longer(
  cols = 
    starts_with('slider_puzzle'), 
  names_to = c('round', '.value'),
  names_pattern = 'slider_puzzle.?(.).(.*)',
  )

推荐阅读