0

我认为关于语法的快速问题。我有一个 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
4

1 回答 1

0

这是答案:

z<-z[,apple20 := grepl('app.*?', fruits), by='noms']
于 2014-05-01T15:42:48.403 回答