大家好,新年快樂, 我想知道如果data.table
可以處理基於每個分組的選擇執行的更新。內更新和下降
R) a=data.table(x=c("a","a","b","b","c","c"),y=c(1,2,3,3,2,1))
R) a
x y
1: a 1
2: a 2
3: b 3
4: b 3
5: c 2
6: c 1
如果我想通過每一個組,我需要做的選擇在j
內一個條件更新,但是這更多的i
事(選擇)。
R) a[,c:=ifelse(y==max(y),"yes","no"),by=x]
R) a
x y c
1: a 1 no
2: a 2 yes
3: b 3 yes
4: b 3 yes
5: c 2 yes
6: c 1 no
可以使用選項類似a[y==max(y),c:="yes",by=x,within.by=TRUE]
我認爲這將是更快
第二個問題,是不是定得下降的說法我做同樣的data.table
,要能夠做到 DT[drop="x,y,z"]
那本質上是DT[,':='(x=NULL,y=NULL,z=NULL)]
請勿使用'ifelse'。 'a [,c:= y == max(y),by = x]'更快。 – Roland
夠公平的,但我需要2行 – statquant
您不需要兩行:'a [,c:= c(「no」,「yes」)[(y == max(y))+ 1],by = X]'。 –