2014-03-31 121 views
0

我有2列r輸出至txt文件

的數據幀
userID itemID 
1  101 
1  103 
1  107 
2  102 
2  103 
3  104 
... 

我想輸出是寫一個文件的Result.txt
1 \噸101,103,107
2 \ t 102,103
3 \ t 104
這裏\ t表示用戶標識和itemID之間的標籤距離。這不像表格那樣對齊。我更多的是Java和Python背景,R中的底層寫入命令是通用目的是什麼?

回答

2

您可以使用dplyr軟件包這一

library(dplyr) 

df.summary <- df %.% 
    group_by(userId) %.% 
    summarise(itemId = paste(itemId, collapse = ",")) 


write.table(x=df.summary,file='new_file.tsv',sep='\t',row.names=F) 
1

有點亂,但是這也有問題,寫輸出到output.txt

d <- read.table(text='userID itemID 
1  101 
1  103 
1  107 
2  102 
2  103 
3  104', header=T) 

cat(sapply(split(d, d$userID), function(x) 
    paste(x$userID[1], paste(x$itemID, collapse=' , '), sep='\t')), 
    sep='\n', file='output.txt') 

進一步詳情,請參閱?cat?paste

0

下面是使用aggregate另一鹼性溶液:

> write.table(aggregate(d$itemID, list(d$userID), paste, collapse=' , '), 
       file='result.txt', sep='\t', col.names=FALSE, row.names=FALSE, quote=FALSE) 
1  101 , 103 , 107 
2  102 , 103 
3  104