[R] To transform a vector of qualitatives values into a dataframe of quantitatives values

Duncan Murdoch murdoch.duncan at gmail.com
Wed Dec 11 14:43:11 CET 2013


On 13-12-11 8:22 AM, PIKAL Petr wrote:
> Hi
>
>> -----Original Message-----
>> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
>> project.org] On Behalf Of Arnaud Michel
>> Sent: Wednesday, December 11, 2013 2:01 PM
>> To: R help
>> Subject: [R] To transform a vector of qualitatives values into a
>> dataframe of quantitatives values
>>
>> Hi
>>
>>   From the vector
>> X <- c(A, A, B, C, B, A, C)
>
> What is A, B and C? If you expect them to be letters, they need to be in parentheses.

You mean "quotes", not parentheses.

>
>>
>> I would like to build the Dataframe :
>> data.frame( A=c(1,1,0,0,0,1,0), B=c(0,0,1,0,1,0,0), C=c(0,0,0,1,0,0,1))
>>
>> Any ideas ?
>
> X <- sample(letters[1:3], 10, replace=T)
> X
>   [1] "c" "c" "a" "b" "c" "c" "a" "a" "a" "a"
> data.frame(A=(X=="a"), B=(X=="b"), C=(X=="c"))

A simpler way is to use model.matrix.  With your example,

X <- factor(X)
m <- model.matrix( ~ X - 1)

(The names of the columns may need adjusting.)

Duncan Murdoch



More information about the R-help mailing list