67-R中dataframe与list的转换

内容概览

  • 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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 230,622评论 6 544
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,716评论 3 429
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 178,746评论 0 383
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,991评论 1 318
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,706评论 6 413
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 56,036评论 1 329
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 44,029评论 3 450
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 43,203评论 0 290
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,725评论 1 336
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,451评论 3 361
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,677评论 1 374
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 39,161评论 5 365
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,857评论 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 35,266评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,606评论 1 295
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,407评论 3 400
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,643评论 2 380

推荐阅读更多精彩内容