我认为有关语法的快速问题。我有一个如下所示的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
答案 0 :(得分:0)
以下是答案:
z<-z[,apple20 := grepl('app.*?', fruits), by='noms']