私は3つの変数を持っています(,place
およびgroup
)。 1,2,3の3つのグループがあります。いずれかのグループの観測値がplace==1
の観測値を持つ場合、その観測値をすべてTRUE
とマークします。私は関数any
を使用しようとしており、内部データテーブルはJ
に参加していますが、機能していません。なぜ誰かがそれをやる方法を説明することはできますか?データテーブルと関数
目的の出力:グループ2はplace == 1
での観測がないため、place1_group
はFALSE
である必要があります。他のグループは、place1_group
をTRUE
とする必要があります。
df2 <-structure(list(world = structure(c(1L, 2L, 3L, 3L, 3L, 5L, 1L,
4L, 2L, 4L), .Label = c("AB", "AC", "AD", "AE", "AF"), class = "factor"),
place = c(1, 1, 2, 2, 3, 3, 1, 2, 3, 1),
group = c(1,1, 1, 2, 2, 2, 3, 3, 3, 3)), .Names = c("world", "place","group"), row.names = c(NA, -10L), class = "data.frame")
df2 <- data.table(df2)
setDT(df2)
setkey(df2, group)
# Two step approach
df2[,place1:=FALSE][place==1,place1:= TRUE]
df2[,place1_group := FALSE][any(place1), place1_group := TRUE, by = group] # Not working, place1_group TRUE for all but it should be FALSE for group==2
# Inside join approach
df2[,test := "No place 1"][J(any(place1),by=group),test:="Yes Place 1", by=group] # Why it does not work for group 3?
しなければならない場合があり
は、 '' i'引数ではなく、 'j'引数内部any'を入れています。 – lmo