【发布时间】:2015-04-20 22:49:47
【问题描述】:
我有一个数据集,其中包含约 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]
}
但我确实需要一个长度(唯一(DF$columns))>1 的列名的向量,所以我尝试了以下方法,但无济于事。
for (i in unique(DF)){
if (length(unique(DF$i)) >1)
{keepvars <- c(DF$i)}
Reduced_DF <- DF[keepvars]
}
有没有人对这种类型的子集/删除少于特定级别数的列有经验?
【问题讨论】:
-
另外,您的 for 循环不起作用的几个原因:1)您在每次迭代中创建一个新变量
Reduced_DF而不是更改原始变量,这意味着它在每次循环后都会忘记, 2)你不能访问带有DF$i的列,你需要DF[[i]],3)表达式DF[,(length(unique(DF$i)))>1]试图从所有列中提取子集,而不是决定是否保留i。
标签: r