如何在 R 中取消嵌套数据帧?
在本文中,我们将讨论如何在 R 编程语言中取消嵌套数据帧。数据帧的取消嵌套是指将其展平。
方法一:使用 do.call 方法
基础 R 中的 do.call() 方法使用其相应的参数列表构造并执行来自函数的函数调用。
Syntax:
do.call(what, args)
Parameter :
- what – The name of the function to execute
- args – Additional arguments to invoke the function upon.
我们调用函数“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 形式生成。
Syntax:
unnest (data, cols )
Parameters :
- data – The data frame to be unnested
- cols – The columns to use for unnesting
例子:
电阻
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