在R中使用grep与ddply和transform

时间:2014-04-30 09:04:03

标签: r transform plyr grepl

我认为有关语法的快速问题。我有一个如下所示的df。我想确定一个人第一次获得苹果,猕猴桃或橙子。我这样做是通过使用以下代码创建三个名为'apple1','kiwi1'和'orange1'的新变量:

ddply(z, "noms", transform, 
  apple1 = as.numeric(!duplicated(fruits) & fruits == "apple"))->z

但是,我实际上想要使用grepl来识别我的水果,但却无法让代码得以解决。这就是我的尝试:

ddply(z, "noms", transform, 
   apple20 = as.numeric(!duplicated(fruits) & z[grep('^app.*?', z$fruits),]))->z

ddply(z, "noms", transform, 
   apple20 = as.numeric(!duplicated(fruits) & grep('^app.*?', z$fruits)))->z

如果有人能指出我在这里出错的地方会很棒。谢谢!

样本DF

 noms fruits kiwi1 orange1 apple1
1  john banana     0       0      0
2  john  apple     0       0      1
3  john  apple     0       0      0
4  john  apple     0       0      0
5  lucy   kiwi     1       0      0
6  lucy orange     0       1      0
7  lucy  apple     0       0      1
8  lucy  berry     0       0      0
9  mary  apple     0       0      1
10 mary  grape     0       0      0
11 mary orange     0       1      0
12 mary  apple     0       0      0
13  tom orange     0       1      0

1 个答案:

答案 0 :(得分:0)

以下是答案:

z<-z[,apple20 := grepl('app.*?', fruits), by='noms']