Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用重复行创建数据帧_R_Iteration_Repeat - Fatal编程技术网

R 使用重复行创建数据帧

R 使用重复行创建数据帧,r,iteration,repeat,R,Iteration,Repeat,我想创建一个包含重复行的数据框 这是我的原始数据集: > mtcars_columns_a variables_interest data_set data_set_and_variables_interest mean 1 mpg mtcars mtcars$mpg 20.09062 2 disp mtcars mtcars$

我想创建一个包含重复行的数据框

这是我的原始数据集:

> mtcars_columns_a
  variables_interest data_set data_set_and_variables_interest      mean
1                mpg   mtcars                      mtcars$mpg  20.09062
2               disp   mtcars                     mtcars$disp 230.72188
3                 hp   mtcars                       mtcars$hp 146.68750
这是我的愿望

> mtcars_columns_b
  variables_interest data_set data_set_and_variables_interest      mean
1                mpg   mtcars                      mtcars$mpg  20.09062
2                mpg   mtcars                      mtcars$mpg  20.09062
3               disp   mtcars                     mtcars$disp 230.72188
4               disp   mtcars                     mtcars$disp 230.72188
5                 hp   mtcars                       mtcars$hp 146.68750
6                 hp   mtcars                       mtcars$hp 146.68750
我知道如何手动完成这项工作,但这既耗时又死板。有没有一种更快速、更自动化、更灵活的方法

以下是我用来创建数据集的代码:

# mtcars data

## displays data
mtcars

## 3 row data set

### lists columns of interest
# ---- NOTE: REQUIRES MANUAL INPUT
# ---- NOTE: lists variables of interest
mtcars_columns_a <- 
  data.frame(
    c(
      "mpg",
      "disp",
      "hp"
    )
  )
# ---- NOTE: REQUIRES MANUAL INPUT
# ---- NOTE: adds colnames
names(mtcars_columns_a)[names(mtcars_columns_a) == 'c..mpg....disp....hp..'] <- 'variables_interest'

### adds data set info
mtcars_columns_a$data_set <- 
  c("mtcars")

### creates data_set_and_variables_interest column
mtcars_columns_a$data_set_and_variables_interest <- 
  paste(mtcars_columns_a$data_set,mtcars_columns_a$variables_interest,sep = "$")

### creates mean column
mtcars_columns_a$mean <-
  c(
    mean(mtcars$mpg),
    mean(mtcars$disp),
    mean(mtcars$hp)
  )

## 6 row data set., the long way

### lists columns of interest
# ---- NOTE: REQUIRES MANUAL INPUT
# ---- NOTE: lists variables of interest
mtcars_columns_b <- 
  data.frame(
    c(
      "mpg",
      "mpg",
      "disp",
      "disp",
      "hp",
      "hp"
    )
  )
# ---- NOTE: REQUIRES MANUAL INPUT
# ---- NOTE: adds colnames
names(mtcars_columns_b)[names(mtcars_columns_b) == 'c..mpg....mpg....disp....disp....hp....hp..'] <- 'variables_interest'

### adds data set info
mtcars_columns_b$data_set <- 
  c("mtcars")

### creates data_set_and_variables_interest column
mtcars_columns_b$data_set_and_variables_interest <- 
  paste(mtcars_columns_b$data_set,mtcars_columns_b$variables_interest,sep = "$")

### creates mean column
mtcars_columns_b$mean <-
  c(
    mean(mtcars$mpg),
    mean(mtcars$mpg),
    mean(mtcars$disp),
    mean(mtcars$disp),
    mean(mtcars$hp),
    mean(mtcars$hp)
  )

根据你的预期产出,这是你想要的东西吗

通过选择函数选择所需变量,并使用分组变量后的汇总函数计算平均值

使用mutate执行数据复制和添加附加变量(不确定是否有必要)

您可以使用dplyr::rename函数编辑变量名

图书馆弹琴 图书馆三年 df% 选择MPG、disp、hp%>% pivot_longereverything%>% 组\按名称%>% SummaryMean=平均值 df1% arrangename%>% mutataset=mtcars, 变量=粘贴数据集,名称,sep=$ df1 >一个tibble:6x4 >名称平均数据集变量 > >1 disp 231。mtcars mtcars$disp >2 disp 231。mtcars mtcars$disp >3 hp 147。mtcars mtcars$hp >4 hp 147。mtcars mtcars$hp >5英里每加仑20.1英里每加仑$ >6英里每加仑20.1英里每加仑$ data.frame对象中的记录顺序通常没有意义,因此您可以只执行以下操作:

rbind(mtcars_columns_a, mtcars_columns_a)
如果您需要按照显示的顺序进行操作,这也很简单:

mtcars_columns_b <- rbind(mtcars_columns_a, mtcars_columns_a)
mtcars_columns_b[order(mtcars_columns_b, mtcars_columns_b$name),]
你可以像下面这样尝试

mtcars_columns_a[rep(seq(nrow(mtcars_columns_a)), each = 2),]
另一个选择是取消计数


从您想要的输出来看,似乎您可以只执行rbindmtcars\u columns\u a,mtcars\u columns\u a?
library(dplyr)
library(tidyr)
mtcars_columns_a %>%
   uncount(2)