J'essaie de convertir une trame de données de longue à large en utilisant dcast
de reshape2
.reshape2 argument non numérique dcast à l'opérateur binaire
créer un cadre de données comme ceci:
> Person=c("A","A","A","A","B","B","C","C","C","C")
> Object=c("car", "watch", "bike", "phone","car","skateboard","car","bike","motorcycle")
> Value=c("1","1","1","1","1","1","1","1","1","1")
> df=data.frame(Person, Object, Value)
et obtenir,
> df
Person Object Value
1 A car 1
2 A watch 1
3 A bike 1
4 A phone 1
5 B car 1
6 B skateboard 1
7 C car 1
8 C bike 1
9 C motorcycle 1
10 C TV 1
Puis, avec dcast
> library(reshape2)
> dcast(df, Person + Object, variable.var="Value", fun.aggregate=length)
Error in Person + Object : non-numeric argument to binary operator
Pourquoi dcast aurait besoin argument numérique pour personne et objet colonne de toute façon?
Je suis en train d'obtenir cette sortie:
Person car watch bike phone skateboard motorcycle TV
A 1 1 1 1 0 0 0
B 1 0 0 0 1 0 0
C 1 0 1 0 0 1 1
* EDIT * @neilfws trouvé une solution:
dcast(df, Person ~ . + Object, variable.var="Value")
Toutefois, lorsque la trame de données est importé d'un tab- fichier délimité:
df = read.table("Person_Object.tab", header=T, sep="\t")
le sa La commande me dcast renvoie:
Error in eval(expr, envir, enclos) : object 'Person' not found
Vous devez spécifier une formule contenant un '' ~, sinon R pense que vous essayez d'ajouter deux chiffres. Peut-être 'Person + Object ~. '? – neilfws
@neilfws: Merci! 'dcast (df, Personne ~. + Objet, variable.var =" Valeur ")' type de travaux. – user31888
Mais l'importation de la même trame de données à partir d'un fichier renvoie une erreur différente (voir modification ci-dessus) – user31888