如何通过重复行数来增加 R 数据框的长度?


如果我们坚信新的数据收集将产生相同类型的数据,那么我们可能希望在 R 中用更多行扩展我们的数据框。虽然,这并不推荐,因为由于这个过程,我们失去了数据的无偏性,但这样做是为了节省在新的数据收集上投入的时间和金钱。在 R 中,我们可以使用 rep 和 seq_len 函数来重复 R 数据框的行数。

示例

考虑以下数据框 -

> x1<-c("Fruits","Vegetables","Dry Fruits","Dairy")
> x2<-c(2,5,6,3)
> df<-data.frame(x1,x2)
> df
x1 x2
1 Fruits 2
2 Vegetables 5
3 Dry Fruits 6
4 Dairy 3

重复行数两次,但一次重复跟随另一次 -

> df[rep(seq_len(nrow(df)),times=2),]
x1 x2
1 Fruits 2
2 Vegetables 5
3 Dry Fruits 6
4 Dairy 3
1.1 Fruits 2
2.1 Vegetables 5
3.1 Dry Fruits 6
4.1 Dairy 3

重复行数五次,但一次重复跟随另一次 -

> df[rep(seq_len(nrow(df)),times=5),]
x1 x2
1 Fruits 2
2 Vegetables 5
3 Dry Fruits 6
4 Dairy 3
1.1 Fruits 2
2.1 Vegetables 5
3.1 Dry Fruits 6
4.1 Dairy 3
1.2 Fruits 2
2.2 Vegetables 5
3.2 Dry Fruits 6
4.2 Dairy 3
1.3 Fruits 2
2.3 Vegetables 5
3.3 Dry Fruits 6
4.3 Dairy 3
1.4 Fruits 2
2.4 Vegetables 5
3.4 Dry Fruits 6
4.4 Dairy 3

重复每一行,次数相同 -

> df[rep(seq_len(nrow(df)),each=5),]
x1 x2
1 Fruits 2
1.1 Fruits 2
1.2 Fruits 2
1.3 Fruits 2
1.4 Fruits 2
  2 Vegetables 5
2.1 Vegetables 5
2.2 Vegetables 5
2.3 Vegetables 5
2.4 Vegetables 5
3 Dry Fruits 6
3.1 Dry Fruits 6
3.2 Dry Fruits 6
3.3 Dry Fruits 6
3.4 Dry Fruits 6
4        Dairy 3
4.1      Dairy 3
4.2      Dairy 3
4.3      Dairy 3
4.4      Dairy 3

重复行数,次数不同 -

> df[rep(seq_len(nrow(df)),times=c(2,3,4,5)),]
x1 x2
1 Fruits 2
1.1 Fruits 2
2 Vegetables 5
2.1 Vegetables 5
2.2 Vegetables 5
3 Dry Fruits 6
3.1 Dry Fruits 6
3.2 Dry Fruits 6
3.3 Dry Fruits 6
4 Dairy 3
4.1 Dairy 3
4.2 Dairy 3
4.3 Dairy 3
4.4 Dairy 3

更新于: 2020-08-11

508 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告