在R中将多行转换为单行

时间:2014-01-28 07:43:55

标签: r sorting dataframe

原始表:

ID------REMARK

1------ A

2------ B

1-------AG

3-------V

2-------BS

1--------E

4--------B

4--------BS

必填表:

ID......REMARK

1-------A,AG,E

2-------B,BS

3-------V

4-------B,BS

然后根据频繁出现的序列列出:

REMARK......OCCURRENCES


A,AG,E-------1

B,BS---------2

V -----------1

2 个答案:

答案 0 :(得分:3)

这是一种方法。 dat是数据框的名称:

res1 <- aggregate(REMARK ~ ID, dat, paste, collapse = ",")
#   ID REMARK
# 1  1 A,AG,E
# 2  2   B,BS
# 3  3      V
# 4  4   B,BS

table(res1$REMARK)
# 
# A,AG,E   B,BS      V 
#      1      2      1 

答案 1 :(得分:1)

以下是plyr解决方案:

library(plyr)
dt.agg <- ddply( dt, .(ID), summarise, Remark = paste( REMARK, collapse = ",", sep = "" )  )
ddply( dt.agg, .(Remark), nrow )

  Remark V1
1 A,AG,E  1
2   B,BS  2
3      V  1