【问题标题】:How to automatically populate the values of a column into a new data frame?如何自动将列的值填充到新的数据框中?
【发布时间】:2020-06-29 10:18:50
【问题描述】:

这是一种一般用Microsoft Excel解决的题型。由于我不熟悉 VBA 和宏,所以需要 R 的帮助。

数据框如下所示。

df <- data.frame(player_no = c(1,2,3,4,5,6), player = c("Ram", "Shyam", "Jordan", "Chris", "Salim", "Salman"), sold_to = c("Team_1", "Team_2", "Team_3", "Team_2", "Team_3", "Team_1"))

现在我希望创建一个新的数据框,其中 player_no 和 player 的值会自动填充到各自的团队中。

预期的图示如下:-

预期的输出如下

#          Team 1                    Team 2              Team 3
# Sno player_no  player  Sno  player_no  player  Sno player_no player
# 1    1          Ram     1     2         Shyam   1   3         Jordan
# 2    6          Salman  2     4         Chris   2   5         Salim

一旦达到预期的输出,是否可以将输出传输回模拟问题中提到的图形表示的 excel 文件(使用writexl 包)?

【问题讨论】:

    标签: r data-transform writexl


    【解决方案1】:

    您可以使用dplyrtidyr

    df %>%
      pivot_wider(names_from="sold_to", 
                  names_glue="{sold_to}_{.value}", 
                  values_from=c("player_no", "player"), 
                  values_fn=list
                  ) %>%
      unnest(everything()) %>%
      select(Team_1_player_no, Team_1_player, 
             Team_2_player_no, Team_2_player, 
             Team_3_player_no, Team_3_player)
    

    它返回的不是你想要的输出,但它非常相似:

    # A tibble: 2 x 6
      Team_1_player_no Team_1_player Team_2_player_no Team_2_player Team_3_player_no Team_3_player
                 <dbl> <fct>                    <dbl> <fct>                    <dbl> <fct>        
    1                1 Ram                          2 Shyam                        3 Jordan       
    2                6 Salman                       4 Chris                        5 Salim  
    

    【讨论】:

      猜你喜欢
      • 2012-11-09
      • 1970-01-01
      • 2019-07-04
      • 2020-03-16
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多