首页 > 解决方案 > R中所有列的相同循环以创建新数据框

问题描述

对于以下数据框,

mydata=data.frame(x1=c(4,8,7,12,10),x2=c(5,7,18,4,12),x3=c(10,12,5,2,14))
mydata
  x1 x2 x3
1  4  5 10
2  8  7 12
3  7 18  5
4 12  4  2
5 10 12 14

我想创建一个新的 3 列,其中每列将通过重复每个元素 12 次来创建。对于第一个新列,

y1=matrix(NA, nrow=5,ncol=12)
for ( g in 1:5){
  y1[g,]=rep(mydata$x1[g],12)
}
ynew_1=c(apply( y1, 1, c))

新_1

 4  4  4  4  4  4  4  4  4  4  4  4  8  8  8  8  8  8  8  8  8  8  8  8  7  7  
7  7  7  7  7  7  7  7  7  7 12 12 12 12 12 12 12 12 12 12 12 12 10 10 10 10 10 10 10 10 10 10 10 10

我可以以类似的方式创建 ynew_2 和 ynew_3。我可以使用任何函数或循环来创建这些新变量吗?任何帮助,将不胜感激

标签: rloopsmatrix

解决方案


使用tidyr

newdata <- mydata %>% uncount(12)

uncount“根据变量或表达式复制行”,它可以满足您的需要,而不会通过循环减慢代码并将其保留为数据框。


推荐阅读