內(nèi)容概覽
-
1、dataframe轉(zhuǎn)換為list
-- 1.1. 每一列作為list的一個元素
-- 1.2. 每一行作為list的一個元素
-- 1.3. 對行進(jìn)行分組蹋订,每一組作為list的一個元素 - 2露戒、對list進(jìn)行轉(zhuǎn)置
-
3、list轉(zhuǎn)換為dataframe
-- 3.1 list的每個元素作為一列
-- 3.2 list的每個元素作為一行
1捶箱、dataframe轉(zhuǎn)換為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()將每一列轉(zhuǎn)換為一個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 對行進(jìn)行分組智什,每一組作為list的一個元素
> # 按testid進(jìn)行分組
> 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進(jìn)行轉(zhuǎn)置
> 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轉(zhuǎn)化為dataframe
3.1 list的每個元素作為一列
> df1 <- as.data.frame(list1$testid)
3.2 list的每個元素作為一行
需要先轉(zhuǎn)換為矩陣撩鹿,再轉(zhuǎn)換為數(shù)據(jù)框。
> 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