繁体   English   中英

如何将数据集表转换为R中的矩阵

[英]How to transform a table of dataset to a matrix in R

我有一个像这样的数据集

df <- data.frame("col1" = c("a", "b", "a", "c", "d", "e", "f", "c"), "col2" = c("v2", "v2", "v2", "v3", "v4", "v1", "v2", "v4"), "index" = c(3,1,3,0,1,2,3,0))

我希望得到这样的矩阵:

  v1 v2 v2 v3 v4
a 0  3  3  0  0
b 0  1  0  0  0
c 0  0  0  0  0
d 0  0  0  0  1
e 2  0  0  0  0
f 0  3  0  0  0

非常感谢您的回答!!

您的组中没有唯一的标识符,并且重复了值( V2 )。 我们可以complete col1col2值,并用0 fill index 。为每个组( col1 )创建一个唯一的标识符,然后spread这些值。

library(tidyverse)

df %>%
  complete(col1, col2, fill = list(index = 0)) %>% 
  group_by(col1) %>%
  mutate(col2 = paste0("V", row_number())) %>%
  spread(col2, index, fill = 0)

#  col1     V1    V2    V3    V4    V5
#  <fct> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 a         0     3     3     0     0
#2 b         0     1     0     0     0
#3 c         0     0     0     0     0
#4 d         0     0     0     1     0
#5 e         2     0     0     0     0
#6 f         0     3     0     0     0

我们可以在base R轻松做到这一点

xtabs(index ~ col1 + col2, unique(df))
#  col2
#col1 v1 v2 v3 v4
#   a  0  3  0  0
#   b  0  1  0  0
#   c  0  0  0  0
#   d  0  0  0  1
#   e  2  0  0  0
#   f  0  3  0  0

注意:未加载任何程序包

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM