如何自动将列的值填充到新的数据框中?

How to automatically populate the values of a column into a new data frame?

提问人:Sri Sreshtan 提问时间:6/29/2020 更新时间:6/29/2020 访问量:74

问:

这是一种通常使用 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和球员的值会自动填充到各自的球队中。

预期的图形表示如下所示:

enter image description here

预期输出如下

#          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 数据转换 writexl

评论


答:

1赞 Martin Gal 6/29/2020 #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