2016-01-21 38 views
1

我有一个包含数据的csv文件;类型和区域。我想根据类型对数据进行排序,然后添加区域,之后我想以csv/excel格式保存该文件。数据如下所示:排序,求和以csv格式保存

TYPE Area 
P 38304 
P 14729 
P 39342 
R 652 
R 497 
C 4506 
U 1705 
U 1513 
U 1514 
U 1531 
U 1580 
U 1581 
U 113509 
U 13198 
U 114730 
U 12402 
C 3252 

我想使数据如下

P R U C 
38304 652 1705 4506 
14729 497 1513 3252 
39342  1514  
      1531  
      1580  
      1581  
      113509 
      13198 
      114730 
      12402 

后,用柱

P R U C 
92375 1149 263263 7758 

到目前为止,我有以下代码执行总和;

data=read.table("Book1.csv", header=TRUE, sep=',') 
    x=(sapply(split(data$Area, data$TYPE), sort)) 
    write.csv(x, file="test.csv") 

我试着先写csv,但是由于行不等我不能写csv。我被卡住了,我知道可以先添加,然后写出最终的输出,但我无法进行编码。 谢谢里拉

+3

我们在说'xtabs(Area〜TYPE,data)'吗? –

+0

或'tapply(df $ Area,df $ TYPE,sum)'。如果你想根据'TYPE'分割'Area'中的值:'split(df $ Area,df $ TYPE)'(然后'sapply(split(df $ Area,df $ TYPE),sum)') 。 – nicola

回答

0

我希望这个工程!

library(plyr) 
newdata <- data[order(Type, Area),] 
data.new <- ddply(newdata, c("TYPE"), summarise, Area = sum("Area")) 
t.data <- t(data.new) 
write.csv(x, file="test.csv")