📜  如何在 R 中取消嵌套数据帧?

📅  最后修改于: 2022-05-13 01:55:07.005000             🧑  作者: Mango

如何在 R 中取消嵌套数据帧?

在本文中,我们将讨论如何在 R 编程语言中取消嵌套数据帧。数据帧的取消嵌套是指将其展平。

方法一:使用 do.call 方法

基础 R 中的 do.call() 方法使用其相应的参数列表构造并执行来自函数的函数调用。

我们调用函数“data.frame”,它将指定为第二个参数的对象转换为数据框。输出以 data.frame 对象的形式返回,其中包含行和相应列的信息。

例子:

R
# creating a data frame
data_frame <- data.frame(col1 = sample(letters[1:5]),
                         col2 = 1:5
                         )
  
print ("Original DataFrame")
print (data_frame)
  
# unnesting data frame
unnest_df <- do.call(data.frame, data_frame)
  
# printing unnesting data frame
str(unnest_df)


R
library(purrr)
  
# creating a data frame
data_frame <- data.frame(col1 = sample(letters[6:10]),
                         col2 = 1:5
                         )
  
print ("Original DataFrame")
print (data_frame)
  
# unnesting data frame
unnest_df <- bind_cols(data_frame[1], reduce(data_frame[-1], tibble))
str(unnest_df)


R
library(tidyr)
  
# creating a data frame
data_frame <- data.frame(col1 = sample(letters[6:10]),
                         col2 = 1:5
                         )
  
print ("Original DataFrame")
print (data_frame)
  
# unnesting data frame
unnest_df <- unnest(
  data_frame , cols = c('col1','col2'))
str(unnest_df)


输出

[1] "Original DataFrame" 
col1 col2 
1    c    1 
2    e    2 
3    a    3 
4    b    4 
5    d    5
'data.frame': 5 obs. of  2 variables:  
$ col1: chr  "c" "e" "a" "b" ...  
$ col2: int  1 2 3 4 5

方法二:使用purrr包

R 编程语言中的 purrr 包用于模拟轻松处理函数和向量。 R 中的 bind_cols() 方法用于绑定两个或多个数据帧的列。 reduce() 方法用于通过递归调用函数将向量 x 减少为单个值。这里的reduce()方法用于创建第二个数据框对象,该对象将数据框的最后一行作为输入,并使用“tibble”作为函数。

输出以非嵌套数据帧的形式获得。

例子:

电阻



library(purrr)
  
# creating a data frame
data_frame <- data.frame(col1 = sample(letters[6:10]),
                         col2 = 1:5
                         )
  
print ("Original DataFrame")
print (data_frame)
  
# unnesting data frame
unnest_df <- bind_cols(data_frame[1], reduce(data_frame[-1], tibble))
str(unnest_df)

输出

[1] "Original DataFrame" 
  col1 col2 
1    g    1 
2    i    2 
3    j    3 
4    h    4 
5    f    5 
'data.frame': 5 obs. of  2 variables:  
$ col1: chr  "g" "i" "j" "h" ...  
$ ...2: int  1 2 3 4 5

方法三:使用 tidyr 包

R 中的 tidyr 包用于“整理”数据。包中的 unnest() 方法可用于通过指定输入数据及其相应列以用于取消嵌套,将数据框转换为未嵌套对象。输出以 R 中的 tibble 形式生成。

例子:

电阻

library(tidyr)
  
# creating a data frame
data_frame <- data.frame(col1 = sample(letters[6:10]),
                         col2 = 1:5
                         )
  
print ("Original DataFrame")
print (data_frame)
  
# unnesting data frame
unnest_df <- unnest(
  data_frame , cols = c('col1','col2'))
str(unnest_df)

输出

[1] "Original DataFrame" 
col1 col2 
1    i    1 
2    j    2 
3    g    3 
4    h    4 
5    f    5
tibble [5 × 2] (S3: tbl_df/tbl/data.frame)  
$ col1: chr [1:5] "i" "j" "g" "h" ...  
$ col2: int [1:5] 1 2 3 4 5