将数据框分成列表中的几个数据框,每列分别

宝拉

我有一个数据框,df其第一列为字符向量,其余为数字。

数据框示例:

df <- data.frame(my_names=sample(LETTERS,4,replace=F),
                 column2=sample(1.3:100.3,4,replace=T),
                 column3=sample(1.3:100.3,4,replace=T),
                 column4=sample(1.3:100.3,4,replace=T),
                 column5=sample(1.3:100.3,4,replace=T))
> df
  my_names column2 column3 column4 column5
1        A     8.3     1.3    19.3    91.3
2        E    18.3    42.3     8.3    76.3
3        O     6.3    46.3    26.3    91.3
4        M    73.3     6.3    59.3    93.3

现在,我想创建4个不同的数据框,如下所示:

  • d1:my_names和column2
  • d2:my_names和column3
  • d3:my_names和column4
  • d4:my_names和column5

并将它们存储到列表中。d1看起来像:

> d1
  my_names column2
1        A     8.3
2        E    18.3
3        O     6.3
4        M    73.3

我试过了:

>the_list <- vector("list",ncol(df)-1)
> for(i in 1:length(the_list)){ for(j in 2:ncol(df)){
+   the_list[[i]] <- select(df, my_names,j)
+ }
+ }
Note: Using an external vector in selections is ambiguous.
ℹ Use `all_of(j)` instead of `j` to silence this message.

但是我得到了所有数据帧都包含的列表column5

    > str(the_list)
List of 4
 $ :'data.frame':   4 obs. of  2 variables:
  ..$ my_names: chr [1:4] "A" "E" "O" "M"
  ..$ column5 : num [1:4] 91.3 76.3 91.3 93.3
 $ :'data.frame':   4 obs. of  2 variables:
  ..$ my_names: chr [1:4] "A" "E" "O" "M"
  ..$ column5 : num [1:4] 91.3 76.3 91.3 93.3
 $ :'data.frame':   4 obs. of  2 variables:
  ..$ my_names: chr [1:4] "A" "E" "O" "M"
  ..$ column5 : num [1:4] 91.3 76.3 91.3 93.3
 $ :'data.frame':   4 obs. of  2 variables:
  ..$ my_names: chr [1:4] "A" "E" "O" "M"
  ..$ column5 : num [1:4] 91.3 76.3 91.3 93.3

我从错误中获取建议(使用all_of(j))并写道:

> for(i in 1:length(the_list)){ 
  for(j in 2:ncol(df)){
    the_list[[i]] <- select(df, my_names,all_of(j))
  }
  }

但是结果与上面相同。

我已经读过一个可以使用的内容split,但是我没有什么可分组的,它是每一列的内容。例如,这不起作用:

new_list<-list(split(df, colnames(df))

我得到了一张怪异的清单1。

试试这个tidyverse方法。您可以将数据格式化为long格式,以将列转换为行。然后,split()您可以根据列名称创建一个列表。最后,您可以应用函数将数据转换为列表中每个数据帧的宽数据,并获得所需的输出。这里的代码:

library(tidyverse)
#Data
df <- data.frame(my_names=sample(LETTERS,4,replace=F),
                 column2=sample(1.3:100.3,4,replace=T),
                 column3=sample(1.3:100.3,4,replace=T),
                 column4=sample(1.3:100.3,4,replace=T),
                 column5=sample(1.3:100.3,4,replace=T))
#Reshape to long
df2 <- df %>% pivot_longer(cols = -1)
#Split into a list
List <- split(df2,df2$name)
#Now reshape function for wide format
List2 <- lapply(List,function(x){x<-pivot_wider(x,names_from = name,values_from = value);return(x)})
names(List2) <- paste0('df',1:length(List2))

输出:

List2
$df1
# A tibble: 4 x 2
  my_names column2
  <fct>      <dbl>
1 N           21.3
2 H           35.3
3 X           42.3
4 U           89.3

$df2
# A tibble: 4 x 2
  my_names column3
  <fct>      <dbl>
1 N           94.3
2 H           54.3
3 X            2.3
4 U           38.3

$df3
# A tibble: 4 x 2
  my_names column4
  <fct>      <dbl>
1 N           75.3
2 H           94.3
3 X           87.3
4 U          100. 

$df4
# A tibble: 4 x 2
  my_names column5
  <fct>      <dbl>
1 N           60.3
2 H           88.3
3 X           14.3
4 U           99.3

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用lapply将单个数据框列转换为数据框列表中的数字

来自分类Dev

在R中合并几个数据框

来自分类Dev

将数据框追加到r中数据框列表中的每个数据框的末尾

来自分类Dev

如何将功能映射到列表中每个数据框的每一行?

来自分类Dev

将数据框中的列分成其他几列

来自分类Dev

python将数据框列分成多行

来自分类Dev

根据第二个数据框中的匹配键将列表追加到Spark数据框列

来自分类Dev

将新列分配给R中第二个数据框的数据框列表

来自分类Dev

将数据分成类框

来自分类Dev

将几个数据框的最后一列转换为R中的一个因子

来自分类Dev

将值分配给python中数据框列表中的单个数据框

来自分类Dev

使用python中的pandas将列表中的数据框合并为单个数据框

来自分类Dev

为列表中的每个数据框转换 1 列

来自分类Dev

如何从数据框列表中添加单个数据框

来自分类Dev

如何按每个数据框中的列值对列表中的数据框进行排序?

来自分类Dev

将一个数据框的每一列与另一数据框列进行比较,并将每个结果重叠打印到单独的文件中

来自分类Dev

将数据框的每一列除以另一个数据框的所有列

来自分类Dev

如何将列添加到列表中的每个数据框

来自分类Dev

Python数据框列表将数据框列表合并为一个数据框

来自分类Dev

仅重命名数据框列表中每个数据框的最后一列

来自分类Dev

将多个数据框中的行名称转换为数据框中的列

来自分类Dev

将一个数据框列的列表拆分为两个数据框列

来自分类Dev

将多个数据框列连接到一个数据框列下的单个数组中

来自分类Dev

将数据框列表中的每个数据框附加到另一个数据框列表中

来自分类Dev

根据单独对象列表中的值将列添加到列表中的每个数据框

来自分类Dev

将每个列与Pandas中数据框的最后一列分别进行回归

来自分类Dev

R-将大型数据框分割为几个较小的数据框,对每个数据框执行Fuzzyjoin,然后输出到单个数据框

来自分类Dev

将文本行分成数据框的列

来自分类Dev

将JSON元素分成pandas数据框的列

Related 相关文章

  1. 1

    使用lapply将单个数据框列转换为数据框列表中的数字

  2. 2

    在R中合并几个数据框

  3. 3

    将数据框追加到r中数据框列表中的每个数据框的末尾

  4. 4

    如何将功能映射到列表中每个数据框的每一行?

  5. 5

    将数据框中的列分成其他几列

  6. 6

    python将数据框列分成多行

  7. 7

    根据第二个数据框中的匹配键将列表追加到Spark数据框列

  8. 8

    将新列分配给R中第二个数据框的数据框列表

  9. 9

    将数据分成类框

  10. 10

    将几个数据框的最后一列转换为R中的一个因子

  11. 11

    将值分配给python中数据框列表中的单个数据框

  12. 12

    使用python中的pandas将列表中的数据框合并为单个数据框

  13. 13

    为列表中的每个数据框转换 1 列

  14. 14

    如何从数据框列表中添加单个数据框

  15. 15

    如何按每个数据框中的列值对列表中的数据框进行排序?

  16. 16

    将一个数据框的每一列与另一数据框列进行比较,并将每个结果重叠打印到单独的文件中

  17. 17

    将数据框的每一列除以另一个数据框的所有列

  18. 18

    如何将列添加到列表中的每个数据框

  19. 19

    Python数据框列表将数据框列表合并为一个数据框

  20. 20

    仅重命名数据框列表中每个数据框的最后一列

  21. 21

    将多个数据框中的行名称转换为数据框中的列

  22. 22

    将一个数据框列的列表拆分为两个数据框列

  23. 23

    将多个数据框列连接到一个数据框列下的单个数组中

  24. 24

    将数据框列表中的每个数据框附加到另一个数据框列表中

  25. 25

    根据单独对象列表中的值将列添加到列表中的每个数据框

  26. 26

    将每个列与Pandas中数据框的最后一列分别进行回归

  27. 27

    R-将大型数据框分割为几个较小的数据框,对每个数据框执行Fuzzyjoin,然后输出到单个数据框

  28. 28

    将文本行分成数据框的列

  29. 29

    将JSON元素分成pandas数据框的列

热门标签

归档