2012-12-25 24 views
1

这里是我的data.txt:如何转换R中的表?

country attitude count 
china a 52 
china b 58 
china c 25 
china d 12 
china e 3 
china f 1 
france a 35 
france b 48 
france c 40 
france d 21 
france e 9 
france f 2 
india a 96 
india b 28 
india c 13 
india d 7 
india e 10 
india f 0 
england a 21 
england b 41 
england c 50 
england d 23 
england e 18 
england f 3 
usa   a 31 
usa   b 48 
usa   c 45 
usa   d 19 
usa   e 10 
usa   f 3 

我想表1:

attitude count 
a 235 
b 223 
c 173 
d 82 
e 50 
f 9 

而表2:

 a b c  d e f 
china 52 58 25 12 3 1 
france 35 48 40 21 9 2 
india 96 28 13 7 10 0 
england 21 41 50 23 18 3 
usa 31 48 45 19 10 3 

我怎样才能变换的data.txt进入两张桌子?

回答

4

表1:

aggregate(count~attitude,data=data.txt,FUN=sum) 
    attitude count 
1  a 235 
2  b 223 
3  c 173 
4  d 82 
5  e 50 
6  f  9 

表2:

xtabs(count~country+attitude,data.txt) 
     attitude 
country a b c d e f 
    china 52 58 25 12 3 1 
    england 21 41 50 23 18 3 
    france 35 48 40 21 9 2 
    india 96 28 13 7 10 0 
    usa  31 48 45 19 10 3 

或者,如果你想要一个新的data.frame:

reshape(data.txt,direction="wide",timevar="attitude",idvar="country") 
    country count.a count.b count.c count.d count.e count.f 
1 china  52  58  25  12  3  1 
7 france  35  48  40  21  9  2 
13 india  96  28  13  7  10  0 
19 england  21  41  50  23  18  3 
25  usa  31  48  45  19  10  3 
+0

我的数据在“/home/debian/data.txt",aggregate(count~attitude,data="/home/debian/data.txt",FUN=sum) eval中的错误(predvars,data,env ):无效'envir'参数 我该怎么办? –

+0

@BqsjSjbq我使用'data.txt'作为想要更好的名字的变量名称。它不是该文件的链接。使用'data.txt < - read.table(“/ home/debian/data.txt”,header = T)'来读取文件。 – James

1

使用哈德利的包,

plyr::ddply(d, .(attitude), summarise, n = sum(count)) 

reshape2::dcast(d, country ~ attitude)