我有一个带有约200,000行数字和分类变量的数据集,但是许多变量都是常量(数字和cat)。我正在尝试创建一个新的数据集,其中length(unique(data.frame$factor))<=1
删除了变量。
到目前为止的示例数据集和尝试:
Temp=c(26:30)
Feels=c("cold","cold","cold","hot","hot")
Time=c("night","night","night","night","night")
Year=c(2015,2015,2015,2015,2015)
DF=data.frame(Temp,Feels,Time,Year)
我认为循环会起作用,但是下面的2次尝试都无法解决问题。我试过了:
for (i in unique(colnames(DF))){
Reduced_DF <- DF[,(length(unique(DF$i)))>1]
}
但是我真的需要一个向量,其中长度(unique(DF $ columns))> 1,所以我尝试了下面的方法,但是没有用。
for (i in unique(DF)){
if (length(unique(DF$i)) >1)
{keepvars <- c(DF$i)}
Reduced_DF <- DF[keepvars]
}
有没有人有过这种类型的子集/删除列的经验,而该子集/列数少于特定级别?
您可以通过以下方式找出每列中有多少个唯一值:
sapply(DF, function(col) length(unique(col)))
# Temp Feels Time Year
# 5 2 1 1
您可以使用此子集来划分列:
DF[, sapply(DF, function(col) length(unique(col))) > 1]
# Temp Feels
# 1 26 cold
# 2 27 cold
# 3 28 cold
# 4 29 hot
# 5 30 hot
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句