2016-06-29 137 views
3

我想根据单个列中的唯一值在数据框中创建列。基于唯一值创建列

E.g.

Column1 
A 
B 
C 

进入

A  B  C 
True False False 
False True False 
False False True 

回答

5

我们可以使用table

!!table(1:nrow(df1), df1$Column1) 
#  A  B  C 
# 1 TRUE FALSE FALSE 
# 2 FALSE TRUE FALSE 
# 3 FALSE FALSE TRUE 

或者使用mtabulateqdapTools

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

您还可以使用dcastreshape2

library(reshape2) 
!is.na(dcast(df, Column1 ~ Column1))[, -1] 

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