在 R 中使用新列重复数据框

标签 r

我有一个数据框:

my_df <- data.frame(var1 = c(1,2,3,4,5), var2 = c(6,7,8,9,10))
my_df
  var1 var2
1    1    6
2    2    7
3    3    8
4    4    9
5    5   10

我还有一个向量:

my_vec <- c("a", "b", "c")

我想重复数据帧length(my_vec)次,用向量值填充新变量的值。有没有一种简单的方法可以做到这一点?如果可能的话,我想在 dplyr 链中执行此操作。期望的输出:

  var1 var2 var3
1    1    6    a
2    2    7    a
3    3    8    a
4    4    9    a
5    5   10    a
6    1    6    b
7    2    7    b
8    3    8    b
9    4    9    b
10   5   10    b
11   1    6    c
12   2    7    c
13   3    8    c
14   4    9    c
15   5   10    c

最佳答案

我们可以使用crossing或与expand_grid

library(tidyr)
crossing(my_df, var3 = my_vec)
#expand_grid(my_df, var3 = my_vec)

如果顺序很重要,请使用排列

library(dplyr)
crossing(my_df, var3 = my_vec) %>% 
    arrange(var3)

-输出

# A tibble: 15 × 3
    var1  var2 var3 
   <dbl> <dbl> <chr>
 1     1     6 a    
 2     2     7 a    
 3     3     8 a    
 4     4     9 a    
 5     5    10 a    
 6     1     6 b    
 7     2     7 b    
 8     3     8 b    
 9     4     9 b    
10     5    10 b    
11     1     6 c    
12     2     7 c    
13     3     8 c    
14     4     9 c    
15     5    10 c   

关于在 R 中使用新列重复数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71862341/

相关文章:

r - 提取 bool 搜索字符串中的第一个值

R中的RDF整数

C - 在 R Holt-Winters 函数中调用的 C_Holt-Winters 函数

r - 在 R 中传递省略号 (...) 作为参数是什么意思?

将列表列表作为数据框返回

r - R中的加权随机数生成

r - 如何在 R 中使用 sub 对匹配进行数字运算?

r - 粘贴到tidyverse的select()中

R中的范围选择

css - 将文本移动到 knitr bootstrap 中绘图的左侧