由于对data.table的操作有时比数据帧快,因此我们可能希望将数据帧转换为data.table对象。数据框和data.table之间的主要区别在于,数据框可在基础R中使用,但是要使用data.table,我们必须安装软件包data.table。我们可以使用data.table包中的help setDT函数来完成此操作。
请看以下数据帧-
> set.seed(1) > x1<-rnorm(20,0.5) > x2<-rnorm(20,0.8) > x3<-rpois(20,2) > x4<-rpois(20,5) > x5<-runif(20,5,10) > df<-data.frame(x1,x2,x3,x4,x5) > df x1 x2 x3 x4 x5 1 -0.1264538 1.7189774 2 6 9.959193 2 0.6836433 1.5821363 3 4 7.477968 3 -0.3356286 0.8745650 1 4 7.421748 4 2.0952808 -1.1893517 1 11 5.867212 5 0.8295078 1.4198257 3 6 8.774105 6 -0.3204684 0.7438713 1 3 7.269477 7 0.9874291 0.6442045 3 3 7.555849 8 1.2383247 -0.6707524 0 5 6.037726 9 1.0757814 0.3218499 1 8 6.143291 10 0.1946116 1.2179416 1 5 7.978560 11 2.0117812 2.1586796 1 10 7.874361 12 0.8898432 0.6972123 0 6 5.385322 13 -0.1212406 1.1876716 2 4 5.177703 14 -1.7146999 0.7461950 4 4 8.213977 15 1.6249309 -0.5770596 3 3 9.643076 16 0.4550664 0.3850054 3 1 7.990462 17 0.4838097 0.4057100 2 6 7.804504 18 1.4438362 0.7406866 2 2 7.630139 19 1.3212212 1.9000254 3 5 9.925476 20 1.0939013 1.5631757 2 6 7.538209
加载data.table包-
> library(data.table)
将数据帧df转换为data.table?
> setDT(df)
检查df是否是data.table-
> is.data.table(df) [1] TRUE
让我们再看一个例子-
> y1<-letters[1:20] > y2<-rep(c("Group1","Group2","Group3","Group4"),times=5) > y3<-1:20 > df_new<-data.frame(y1,y2,y3) > df_new y1 y2 y3 1 a Group1 1 2 b Group2 2 3 c Group3 3 4 d Group4 4 5 e Group1 5 6 f Group2 6 7 g Group3 7 8 h Group4 8 9 i Group1 9 10 j Group2 10 11 k Group3 11 12 l Group4 12 13 m Group1 13 14 n Group2 14 15 o Group3 15 16 p Group4 16 17 q Group1 17 18 r Group2 18 19 s Group3 19 20 t Group4 20 > setDT(df_new) > is.data.table(df_new) [1] TRUE