通过计算R

时间:2016-09-12 01:12:50

标签: r dataframe frequency reshape

我有csv格式的数据,其中包含recipeid,ingredientname字段。我想对数据进行分析,并且需要格式化,其中一个成分名称是起始节点,另一个作为终点节点,第三列作为配方中这两种成分的出现次数。是否有在R中执行此操作的命令?

目前的数据如下:

recipeid | ingredientname
-------- | ---------------
01       | A
01       | B
01       | C
02       | A
02       | B
02       | D
03       | B
03       | D

我希望:

StartNode | EndNode | Occurrence
----------|---------|------------
   A      |   B     | 2
   B      |   D     | 2
   B      |   C     | 1

1 个答案:

答案 0 :(得分:4)

我认为这不需要图形对象。只需查看上一行即可到达那里。 E.g:

tmp <- data.frame(
  start=ave(dat$ingredientname, dat$recipeid, FUN=function(x) c(NA,head(x,-1)) ),
  end=dat$ingredientname
)
aggregate(count ~ ., data=transform(tmp,count=1), FUN=sum)

#  start end count
#1     A   B     2
#2     B   C     1
#3     B   D     2

dat的位置:

dat <- read.table(text="recipeid  ingredientname
01        A
01        B
01        C
02        A
02        B
02        D
03        B
03        D",header=TRUE,stringsAsFactors=FALSE)