相关疑难解决方法(0)

按名称删除数据框列

我有一些列要从数据框中删除.我知道我们可以使用以下内容单独删除它们:

df$x <- NULL
Run Code Online (Sandbox Code Playgroud)

但我希望用更少的命令来做到这一点.

另外,我知道我可以使用整数索引来删除列,如下所示:

df <- df[ -c(1, 3:6, 12) ]
Run Code Online (Sandbox Code Playgroud)

但我担心我的变量的相对位置可能会改变.

考虑到R的强大程度,我认为可能有一种更好的方法,就是逐一删除每一列.

r dataframe r-faq

807
推荐指数
18
解决办法
133万
查看次数

如何在数据框中按名称删除列

我有一个大型数据集,我想阅读特定列或删除所有其他列.

data <- read.dta("file.dta")
Run Code Online (Sandbox Code Playgroud)

我选择了我不感兴趣的列:

var.out <- names(data)[!names(data) %in% c("iden", "name", "x_serv", "m_serv")]
Run Code Online (Sandbox Code Playgroud)

而且我想做的事情如下:

for(i in 1:length(var.out)) {
   paste("data$", var.out[i], sep="") <- NULL
}
Run Code Online (Sandbox Code Playgroud)

删除所有不需要的列.这是最佳解决方案吗?

r subset dataframe

281
推荐指数
8
解决办法
38万
查看次数

用于在data.table中删除单个列的习惯用法

我需要从包含几百列的data.frame中删除一列.

有了data.frame,我会习惯性subset地做到这一点:

> dat <- data.table( data.frame(x=runif(10),y=rep(letters[1:5],2),z=runif(10)),key='y' )
> subset(dat,select=c(-z))
            x y
 1: 0.1969049 a
 2: 0.7916696 a
 3: 0.9095970 b
 4: 0.3529506 b
 5: 0.4923602 c
 6: 0.5993034 c
 7: 0.1559861 d
 8: 0.9929333 d
 9: 0.3980169 e
10: 0.1921226 e
Run Code Online (Sandbox Code Playgroud)

显然这仍然有效,但它似乎不是一个非常类似data.table的习语.我可以手动构建一个我想保留的列名列表,这似乎更像一些data.table:

> dat[,list(x,y)]
            x y
 1: 0.1969049 a
 2: 0.7916696 a
 3: 0.9095970 b
 4: 0.3529506 b
 5: 0.4923602 c
 6: 0.5993034 c
 7: 0.1559861 d
 8: 0.9929333 d
 9: …
Run Code Online (Sandbox Code Playgroud)

r data.table

6
推荐指数
1
解决办法
322
查看次数

标签 统计

r ×3

dataframe ×2

data.table ×1

r-faq ×1

subset ×1