r-重构数据帧(pivot_wider)



我又遇到了一些数据问题。我需要重组帧:

我的数据帧如下所示。它描述了三个数据集(1-3(,这三个数据集中的列名包括:

df <- data.frame(df =   c(1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3),
vars = c("var1", "var2", "var3", "var4", 
"var1", "var1b", "var4", 
"var5", "var1", "var2", "var7"))
df  vars
1   1  var1
2   1  var2
3   1  var3
4   1  var4
5   2  var1
6   2 var1b
7   2  var4
8   3  var5
9   3  var1
10  3  var2
11  3  var7

我的目标是有一个这样的概览表(这些值并不完全是上面的值(,其中1表示变量被包括在内,2表示变量不包括在相应的数据帧df1df3:中

df %>% pivot_wider(names_from = df, values_from = ??)
df1          df2          df3
_________________________________________________________________
var1        1            0            0
var1b       1            1            0
var2        1            1            1
var3        0            1            1
var4        0            0            1
var7        0            0            1

只需执行:

t(table(df))

甚至

table(rev(df))

甚至

xtabs(~vars+df, df)

如果您需要返回数据帧:

as.data.frame.matrix(t(table(df)))
1 2 3
var1  1 1 1
var1b 0 1 0
var2  1 0 1
var3  1 0 0
var4  1 1 0
var5  0 0 1
var7  0 0 1

这行吗:

library(dplyr)
library(tidyr)
library(tibble)
df %>% group_by(df, vars) %>% 
mutate(c = n()) %>% 
pivot_wider(id_cols = vars, names_from = df, names_prefix = 'df', values_from = c, values_fill = 0) %>% 
column_to_rownames('vars')
df1 df2 df3
var1    1   1   1
var2    1   0   1
var3    1   0   0
var4    1   1   0
var1b   0   1   0
var5    0   0   1
var7    0   0   1
> 

最新更新