R语言 把数据框架转换为data.table

R语言 把数据框架转换为data.table

在这篇文章中,我们将讨论如何在R编程语言中把数据框架转换为data.table。data.table是一个R包,它提供了数据框架的增强版本。data.table的特点。

  • data.table不设置或使用行名
  • 行号用”: “打印,以提高可读性
  • 与数据框架不同,在data.table中,字符类型的列默认不会被转换为因子。

方法1:使用setDT()方法

虽然数据框架可以使用基本的R包,但data.table对象是data.table包的一部分,需要在工作空间中安装。setDT()方法可以用来将数据框架或列表强制到data.table中,在这里对原始数据框架进行转换。修改是通过对原始数据结构的引用进行的。

语法: setDT(x)

参数:

  • x : 有名或无名的列表、数据框或数据表。

例子 1 :

# using the required library
library(data.table)
  
# declare a dataframe
data_frame <- data.frame(col1 = c(1:7),
                         col2 = LETTERS[1:7],
                         col3 = letters[1:7])
  
print ("Original DataFrame")
print (data_frame)
  
# converting into data.table
setDT(data_frame)
print ("Resultant DataFrame")
print (data_frame)

输出

[1] "Original DataFrame"
> print (data_frame)
    col1 col2 col3
1    1    A    a
2    2    B    b
3    3    C    c
4    4    D    d
5    5    E    e
6    6    F    f
7    7    G    g
[1] "Resultant DataFrame"
> print (data_frame)
     col1 col2 col3
1:    1    A    a
2:    2    B    b
3:    3    C    c
4:    4    D    d
5:    5    E    e
6:    6    F    f
7:    7    G    g

所有存储在数据框架中的缺失和不确定的值也会保留在data.table中。行名被重新分配为以整数值开始的标识符,从1开始直到数据框架中的行数。data.table库还提供了其他函数来验证R对象是否是一个data.table,使用is.data.table(data_frame)。如果指定的参数是data.table,它返回true,否则返回false。

例2 :

# using the required library
library(data.table)
  
# declare a dataframe
data_frame <- data.frame(col1 = c(1, NA, 4, NA, 3, NA),       
                         col2 = c("a", NA, "b", "e", "f", "G"),
                         row.names = c("row1","row2","row3",
                                       "row4","row5","row6"))
  
print ("Original DataFrame")
print (data_frame)
  
# converting into data.table
setDT(data_frame)
print ("Resultant DataFrame")
print (data_frame)
  
# checking if the dataframe is data table
print ("Check if data table")
print (is.data.table(data_frame))

输出

[1] "Original DataFrame"
       col1 col2
row1    1    a
row2   NA <NA>
row3    4    b
row4   NA    e
row5    3    f
row6   NA    G
[1] "Resultant DataFrame"
     col1 col2
1:   1    a
2:   NA <NA>
3:   4    b
4:  NA    e
5:   3    f
6:   NA    G
[1] "Check if data table"
[1] TRUE

解释: 原始数据框架被存储为data.frame对象,然后使用setDT方法返回相同的数据框架,并在开头添加行号,行号标识符后面是冒号。缺少的值,也就是NA,将按原样返回。由于对数据框架进行了修改,当我们使用is.data.table()检查它是否是一个数据表时,它会返回逻辑TRUE值。

方法2:使用as.data.table()方法

as.data.table()方法可以用来将数据框架或列表强制转换为data.table,如果指定的对象原本不是data.table,并且转换是可能的。不会对原始数据框架进行更改,因此,它会创建一个基础对象的副本。

语法: as.data.table(x,keep.rownames=FALSE)

参数:

  • x : 一个已命名或未命名的列表、数据框或数据表。
  • keep.rownames: 默认情况下。为假。对于data.frame,TRUE保留data.frame的行名在一个新的列rn下。 keep.rownames = “id “命名列 “id”。

例子

# using the required library
library(data.table)
  
# declare a dataframe
data_frame <- data.frame(col1 = c(1, NA, 4, NA, 3, NA),       
                         col2 = c("a", NA, "b", "e", "f", "G"),
                         row.names = c("row1","row2","row3",
                                       "row4","row5","row6"))
  
print ("Original DataFrame")
print (data_frame)
  
# converting into data.table
dt <- as.data.table(data_frame, TRUE)
print ("Resultant DataFrame")
print (dt)
print ("Check if data table")
print (is.data.table(dt))

输出

[1] "Original DataFrame" 
> print (data_frame)      
           col1 col2 
   row1    1    a 
   row2   NA <NA> 
   row3    4    b 
   row4   NA    e 
   row5    3    f 
   row6   NA    G 
[1] "Resultant DataFrame"
       rn col1 col2 
1: row1    1    a 
2: row2   NA <NA> 
3: row3    4    b 
4: row4   NA    e 
5: row5    3    f 
6: row6   NA    G 
[1] "Check if data table" 
[1] TRUE

解释: 原始数据框架中的每一行都有一个行名。当数据框架被转换为数据表时,行名形成一个单独的列 “rn”,并且每一行都由行号标识符和冒号引导。然而,这些变化并没有在原始数据框中进行。因此,当我们将is.data.table()方法应用于原始数据框架时,它返回FALSE。相反,如果我们将此方法应用于as.data.table()方法的结果,我们会得到TRUE值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程