如何在不改变表格格式的情况下将表格列表转换为数据框列表?

问题描述 投票:0回答:1

我有这个列表(我们只关心它是 2 个表的列表)

set.seed(222)
df = data.frame(x = trunc(runif(10,0,2)),
                y = trunc(runif(10,4,6)),
                z = trunc(runif(10,19,21)),
                m = trunc(runif(10,28,30)))
df


t1 = table(df$x,df$y)
t2=table(df$z,df$m)


L = list(t1,t2)

当我申请时

lapply
如下

lapply(L,as.data.frame)

我有这个结果

[[1]]
  Var1 Var2 Freq
1    0    4    0
2    1    4    2
3    0    5    5
4    1    5    3

[[2]]
  Var1 Var2 Freq
1   19   28    2
2   20   28    3
3   19   29    3
4   20   29    2

我尝试包含函数

spread
来解决这个问题,但对我不起作用。

r dataframe lapply frequency
1个回答
3
投票

table
对象可以转换为
matrix
data.frame
,以便它保持相同的结构

L1 <- lapply(L, as.data.frame.matrix)

-输出

> str(L1)
List of 2
 $ :'data.frame':   2 obs. of  2 variables:
  ..$ 4: int [1:2] 4 3
  ..$ 5: int [1:2] 2 1
 $ :'data.frame':   2 obs. of  2 variables:
  ..$ 28: int [1:2] 3 1
  ..$ 29: int [1:2] 2 4
> L1
[[1]]
  4 5
0 4 2
1 3 1

[[2]]
   28 29
19  3  2
20  1  4

如果我们需要

proportions

lapply(L, \(x) 100 *as.data.frame.matrix(proportions(x)))
© www.soinside.com 2019 - 2024. All rights reserved.