我有一个动物砝码的数据集,我想按两个因素所有者和动物类型排序,如果我要按1因子排序然后我会使用“by”函数但是有两个因素我不知道除了某种凌乱的“for”循环之外该怎么办(而且这种情况也不好)。
下面的代码生成了我尝试排序的类型的示例数据集。
owner <-c("Fred", "Mary", "James", "Ingrid", "Schubert", "Alice") #owner names
animal <-c("Cow", "Giant sheep", "Deer", "Giga chicken") #Animal types
data <- data.frame(owner= sample(owner, 1000, replace= TRUE), animal=sample(animal, 1000, replace= TRUE), weight=rnorm(1000,mean=250, sd=50)) #data set
owner.weight <- data.frame(matrix(nrow=length(owner), ncol=(length(animal)+1))) #set up data frame to store the animal weights
colnames(owner.weight) <-c("owner", animal) #rename columns
owner.weight[,1]<-owner #input in owner names
我想要最终得到的是一个数据框或矩阵,它具有以下双向表的列和行变量,但重量总和不是动物计数。通过这种方式,我可以看到每个主人每只动物的重量以及总数和比率。
table(data$owner,data$animal)
感谢您的帮助
答案 0 :(得分:3)
试试这个:
> xtabs(weight ~., data)
animal
owner Cow Deer Giant sheep Giga chicken
Alice 8753.989 9397.552 9448.641 11968.743
Fred 12085.692 12062.136 11934.803 9199.231
Ingrid 10242.862 8614.974 8668.428 13986.118
James 8842.253 10450.657 13615.702 10580.488
Mary 9582.275 15187.274 9005.665 12668.783
Schubert 7155.185 9440.239 12112.422 7030.887