簡體   English   中英

如何基於多個條件在data.table中生成新列?

[英]How to generate a new column in data.table based on multiple conditions?

如何基於多個條件在data.table中生成新列?

如果它在data.frame環境中,我可以使用以下代碼。

df<-data.frame(a=c(1,2,3,4,5,6,7,8,9,10),b=c(10,20,30,40,50,60,70,80,90,100))
df$c<-ifelse(df$b<=30,"G1",
             ifelse(df$b>30 & df$b<=60, "G2",
                    ifelse(df$b>60 & df$b<=80, "G3",
                           ifelse(df$b>80 & df$b<=90, "G4","G5"))))

在data.table環境中,我知道我可以使用

dt<-data.table(a=c(1,2,3,4,5,6,7,8,9,10),b=c(10,20,30,40,50,60,70,80,90,100))
dt[,d:=...]

生成一個新列。 但是如何使用dt [,d:= ...]在dt中生成df $ c?


我有多傻? 我沒有嘗試。 以下一項。

dt<-data.table(a=c(1,2,3,4,5,6,7,8,9,10),b=c(10,20,30,40,50,60,70,80,90,100))
dt[,d:=ifelse(b<=30,"G1",
              ifelse(b>30 & b<=60, "G2",
                     ifelse(b>60 & b<=80, "G3",
                            ifelse(b>80 & b<=90, "G4","G5"))))]

謝謝

對於涉及基於一定范圍的值進行重新編碼的情況,基本函數cut將極大地幫助您:

dt[,d:= cut(b, c(-Inf, 30, 60, 80, 90, Inf), paste0("G", 1:5))]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM