根据唯一值创建列

时间:2016-06-29 06:19:28

标签: r dataframe

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

E.g。

Column1
A
B
C

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

3 个答案:

答案 0 :(得分:5)

我们可以使用table

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

或使用mtabulate

中的qdapTools
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

答案 1 :(得分: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 :(得分:2)

您还可以使用dcast

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

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