r - 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。我可以使用任何函数或循环来创建这些新变量吗?任何帮助,将不胜感激
解决方案
使用tidyr
newdata <- mydata %>% uncount(12)
uncount
“根据变量或表达式复制行”,它可以满足您的需要,而不会通过循环减慢代码并将其保留为数据框。
推荐阅读
- reed-solomon - 为 reed-solomon 编码选择伽罗瓦域
- javascript - 如何增加/减少购物车中产品的数量?
- javascript - TamperMonkey JS UserScript 绕过等待时间
- python - 带有类的画布中的Python tkinter图像
- python - 我正在尝试使用 pandas 为数据框中的 5 个分类变量创建单独的条形图
- javascript - Javascript 与 C# 中的异步/等待
- jenkins - 在脚本控制台中启用 Jenkins 本机 groovy
- yaml - 使用 Helm 命令安装时出现 Kubernetes 清单错误
- angular - 角度:垫侧导航边距分离
- ruby - 从折扣中排除产品变体?