[英]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.