根据唯一值创建列

3
我很愿意根据单个列中的唯一值在数据框中创建列。
例如:
Column1
A
B
C

进入

A     B      C
True  False  False
False True   False
False False  True
3个回答

5
我们可以使用 table
!!table(1:nrow(df1), df1$Column1)
#       A     B     C
#  1  TRUE FALSE FALSE
#  2 FALSE  TRUE FALSE
#  3 FALSE FALSE  TRUE

或者使用 qdapTools 中的 mtabulate

library(qdapTools)
mtabulate(df1$Column1)!=0
#         A     B     C
#[1,]  TRUE FALSE FALSE
#[2,] FALSE  TRUE FALSE
#[3,] FALSE FALSE  TRUE

或者使用 model.matrix

 model.matrix(~Column1-1, df1)!=0
 #  Column1A Column1B Column1C
 #1     TRUE    FALSE    FALSE
 #2    FALSE     TRUE    FALSE
 #3    FALSE    FALSE     TRUE

5
你也可以使用循环。
sapply(df$Column1, function(i) grepl(i, df$Column1))
#         A     B     C
#[1,]  TRUE FALSE FALSE
#[2,] FALSE  TRUE FALSE
#[3,] FALSE FALSE  TRUE

2
您也可以使用reshape2包中的dcast函数。
library(reshape2)
!is.na(dcast(df, Column1 ~ Column1))[, -1]

#       A     B     C
#[1,]  TRUE FALSE FALSE
#[2,] FALSE  TRUE FALSE
#[3,] FALSE FALSE  TRUE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接