Преобразование дел в переменные в R - PullRequest
3 голосов
/ 24 октября 2011

У меня есть данные в формате data_format1.Исходя из этого, я хочу преобразовать случаи в переменные, чтобы получить data_format2.

вы можете найти data_format1 здесь:

ArticleID<-c(1, 2, 3, 3, 4)
Word<-c("a", "b", "b", "c", "c")
Freq<-c(2, 4, 6, 3, 2)
data_format1<-cbind(ArticleID, Word, Freq)

data_format1

     ArticleID Word Freq
[1,] "1"       "a"  "2" 
[2,] "2"       "b"  "4" 
[3,] "3"       "b"  "6" 
[4,] "3"       "c"  "3" 
[5,] "4"       "c"  "2" 

data_format2 дается здесь:

ArticleID_t<-c(1, 2, 3, 4)
a<-c(2, 0, 0, 0)
b<-c(0, 4, 6, 0)
c<-c(0, 0, 3, 2)
data_format2<-cbind(ArticleID_t, a, b, c)
data_format2

     ArticleID_t a b c
[1,]           1 2 0 0
[2,]           2 0 4 0
[3,]           3 0 6 3
[4,]           4 0 0 2

1 Ответ

4 голосов
/ 24 октября 2011

Это классическая проблема изменения формы - преобразование данных из большого формата в широкий.Пакет reshape2 идеально подходит для этого.

Примечание: Сначала необходимо преобразовать данные в data.frame.Помните, что cbind будет принимать ваши данные и создавать массив, а не data.frame.Поэтому в решении я использую data.frame(...) для воссоздания ваших данных.

library(reshape2)
data_format1 <- data.frame(ArticleID, Word, Freq)
reshape2::dcast(data_format1, ArticleID~Word, sum)

  ArticleID a b c
1         1 2 0 0
2         2 0 4 0
3         3 0 6 3
4         4 0 0 2

См. ?reshape2::dcast для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...