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)