2016-09-06 3 views
0

У меня есть dataframe называется df, который выглядит примерно так ...dcast ошибка: `Ошибка в матче (х, стол, NoMatch = 0L)`

"ID","ReleaseYear","CriticPlayerPrefer","n","CountCriticScores","CountUserScores" 
"1",1994,"Both",1,5,283 
"2",1994,"Critics",0,0,0 
"3",1994,"Players",0,0,0 
"4",1995,"Both",3,17,506 
"5",1995,"Critics",0,0,0 
"6",1995,"Players",0,0,0 
"7",1996,"Both",18,163,3536 
"8",1996,"Critics",2,18,97 
"9",1996,"Players",3,20,79 

Я хочу, чтобы перевернуть кадр данных вокруг так столбцы так:

"ReleaseYear","Both","Critics","Players"

значения столбцов Both', Critics and Игроки would be the n` для каждого.

При попытке запуска этого ...

require(dcast) 
chartData.CriticPlayerPreferByYear <- dcast(
    data = df, 
    formula = ReleaseYear ~ CriticPlayerPrefer, 
    fill = 0, 
    value.var = n 
) 

... Я получаю эту ошибку:

Error in match(x, table, nomatch = 0L) : 
    'match' requires vector arguments 

Что здесь проблема? Как это исправить?

+3

'value.var =" n "', нужно указывать имя столбца. – Psidom

+0

dcast не является пакетом, AFAIK; вы имеете в виду reshape2? Альтернатива: 'library (dplyr); библиотека (тидыр); df%>% select (ReleaseYear, CriticPlayerPrefer, n)%>% spread (CriticPlayerPrefer, n) ' – alistaire

+0

@Psidom, если вы хотите, чтобы я отметил это правильно, продолжайте и отправляйте свой ответ – Username

ответ

2

Возможно, вам не хватает кавычек?

data <- read.table(text='"ID","ReleaseYear","CriticPlayerPrefer","n","CountCriticScores","CountUserScores" 
"1",1994,"Both",1,5,283 
"2",1994,"Critics",0,0,0 
"3",1994,"Players",0,0,0 
"4",1995,"Both",3,17,506 
"5",1995,"Critics",0,0,0 
"6",1995,"Players",0,0,0 
"7",1996,"Both",18,163,3536 
"8",1996,"Critics",2,18,97 
"9",1996,"Players",3,20,79"',header=T,sep=",") 

library(reshape2) 
dcast(data, ReleaseYear ~ CriticPlayerPrefer, value.var="n") 

# ReleaseYear Both Critics Players 
#  1994 1  0  0 
#  1995 3  0  0 
#  1996 18  2  3 

Это то, что я получаю. Это желаемый результат?

+0

Просто увидел комментарий @Psidom; Игнорирование ^ – prateek1592