R语言 如何取消数据帧
在这篇文章中,我们将讨论如何在R编程语言中取消数据框架的嵌套。数据框架的不嵌套是指将其扁平化。
方法1:使用do.call方法
基础R语言中的do.call()方法使用其相应的参数列表从一个函数中构造并执行一个函数调用。
语法:
do.call(what, args)
参数:
- what – 要执行的函数的名称
- args – 调用该函数的附加参数。
我们调用函数 “data.frame”,将第二个参数指定的对象转化为数据框。输出将以data.frame对象的形式返回,其中包含行和相应的列信息。
例子
# 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)
输出
[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
方法2:使用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
方法3:使用tidyr包
R中的tidyr包被用来 “整理 “数据。该包中的unnest()方法可以用来将数据框转换为一个非嵌套对象,方法是指定输入数据及其对应的列,用于非嵌套。输出结果是以R中的tibble形式产生的。
语法:
unnest (data, cols )
参数 :
- data – 要取消嵌套的数据框架
- cols – 用于解嵌的列
例子
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