内容概览
-
1、dataframe转换为list
-- 1.1. 每一列作为list的一个元素
-- 1.2. 每一行作为list的一个元素
-- 1.3. 对行进行分组,每一组作为list的一个元素 - 2、对list进行转置
-
3、list转换为dataframe
-- 3.1 list的每个元素作为一列
-- 3.2 list的每个元素作为一行
1、dataframe转换为list
1.1 每一列作为list的一个元素
> library(pacman)
> p_load(tidyverse)
> df <- read.csv("./data_set/store-reliab-data.csv", header = T) %>% as_tibble
> str(df)
## Classes 'tbl_df', 'tbl' and 'data.frame': 80 obs. of 7 variables:
## $ testid : int 1 1 1 1 1 1 1 1 2 2 ...
## $ n : int 8 8 8 8 8 8 8 8 8 8 ...
## $ alpha : num 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 ...
## $ times : num 19.13 2.94 27.81 15.24 24.75 ...
## $ delta : int 0 1 0 0 0 0 0 0 0 1 ...
## $ true_theta: int 10 10 10 10 10 10 10 10 10 10 ...
## $ lb : logi NA NA NA NA NA NA ...
as.list()将每一列转换为一个list:
> list1 <- as.list(df)
> list1
## $testid
## [1] 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4
## [27] 4 4 4 4 4 4 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 7 7 7 7
## [53] 7 7 7 7 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 10 10 10 10 10 10
## [79] 10 10
##
## $n
## [1] 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
## [41] 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
##
## $alpha
## [1] 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05
## [17] 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05
## [33] 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05
## [49] 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05
## [65] 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05
##
## $times
## [1] 19.13 2.94 27.81 15.24 24.75 88.48 21.09 20.70 28.14 9.82 5.05 8.83 35.47
## [14] 9.63 4.41 8.49 1.41 0.79 7.72 52.79 15.64 13.29 19.14 0.50 3.24 13.20
## [27] 2.04 10.23 3.02 7.25 7.52 2.35 10.80 10.28 12.92 12.53 5.55 3.01 12.93
## [40] 9.95 5.14 20.08 4.22 21.79 32.18 5.58 5.95 9.77 2.10 3.09 11.06 7.74
## [53] 0.90 11.08 2.47 15.72 36.25 3.23 20.48 8.53 6.10 6.28 13.39 17.34 19.40
## [66] 1.90 2.59 0.35 2.35 10.43 5.43 18.39 1.93 5.04 4.09 0.30 11.42 4.02
## [79] 7.92 6.17
##
## $delta
## [1] 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
## [41] 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 0 1 0 0 0 1 0 1 1 1 1 0 1 1 0 1 0 1 1 0
##
## $true_theta
## [1] 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
## [27] 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
## [53] 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
## [79] 10 10
##
## $lb
## [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [27] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [53] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
## [79] NA NA
1.2 每一行作为list的一个元素
> list2 <- split(df, 1:nrow(df))
> list2$`10`
## # A tibble: 1 x 7
## testid n alpha times delta true_theta lb
## <int> <int> <dbl> <dbl> <int> <int> <lgl>
## 1 2 8 0.05 9.82 1 10 NA
1.3 对行进行分组,每一组作为list的一个元素
> # 按testid进行分组
> list3 <- split(df, df$testid)
> list3$`5`
## # A tibble: 8 x 7
## testid n alpha times delta true_theta lb
## <int> <int> <dbl> <dbl> <int> <int> <lgl>
## 1 5 8 0.05 10.8 1 10 NA
## 2 5 8 0.05 10.3 1 10 NA
## 3 5 8 0.05 12.9 1 10 NA
## 4 5 8 0.05 12.5 1 10 NA
## 5 5 8 0.05 5.55 1 10 NA
## 6 5 8 0.05 3.01 1 10 NA
## 7 5 8 0.05 12.9 1 10 NA
## 8 5 8 0.05 9.95 1 10 NA
2、对list进行转置
> list2.z <- t(list2$`10`)
> list2.z
## [,1]
## testid 2.00
## n 8.00
## alpha 0.05
## times 9.82
## delta 1.00
## true_theta 10.00
## lb NA
3、list转化为dataframe
3.1 list的每个元素作为一列
> df1 <- as.data.frame(list1$testid)
3.2 list的每个元素作为一行
需要先转换为矩阵,再转换为数据框。
> df2 <- data.frame(matrix(unlist(list1$delta), byrow = T, nrow = 1), stringsAsFactors = F)
> df2
## X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22
## 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1
## X23 X24 X25 X26 X27 X28 X29 X30 X31 X32 X33 X34 X35 X36 X37 X38 X39 X40 X41 X42
## 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0
## X43 X44 X45 X46 X47 X48 X49 X50 X51 X52 X53 X54 X55 X56 X57 X58 X59 X60 X61 X62
## 1 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 0 1
## X63 X64 X65 X66 X67 X68 X69 X70 X71 X72 X73 X74 X75 X76 X77 X78 X79 X80
## 1 0 0 0 1 0 1 1 1 1 0 1 1 0 1 0 1 1 0
网友评论