gpt4 book ai didi

r - 如何从 data.frame 中删除列?

转载 作者:行者123 更新时间:2023-12-03 07:29:04 26 4
gpt4 key购买 nike

与其说是“你怎么...?”但更多的是“你怎么...?”

如果有人给你一个包含 200 列的文件,并且你想将其减少到分析所需的少数列,你会如何处理?一种解决方案是否比另一种解决方案更有优势?

假设我们有一个包含列 col1、col2 到 col200 的数据框。如果您只想要 1-100,然后是 125-135 和 150-200,您可以:

dat$col101 <- NULL
dat$col102 <- NULL # etc

dat <- dat[,c("col1","col2",...)]

dat <- dat[,c(1:100,125:135,...)] # shortest probably but I don't like this

dat <- dat[,!names(dat) %in% c("dat101","dat102",...)]

我还缺少什么吗?我知道这看起来很主观,但这是一件很重要的事情,当有更有效的方法时,你可能会潜入并开始以一种方式做,并养成一种习惯。很像这个关于which的问题。

编辑:

或者,是否有一种简单的方法来创建可行的列名称向量? name(dat) 不会用逗号来打印它们,这是您在上面的代码示例中需要的,因此,如果您以这种方式打印出名称,则到处都有空格,并且必须手动输入逗号...是否有命令会给你“col1”,“col2”,“col3”,...作为你的输出,这样你就可以轻松地获取你想要的东西?

最佳答案

我使用data.table:=无论表的大小如何,操作符都会立即删除列。

DT[, coltodelete := NULL]

DT[, c("col1","col20") := NULL]

DT[, (125:135) := NULL]

DT[, (variableHoldingNamesOrNumbers) := NULL]

任何使用 <- 的解决方案或subset将复制整个表。 data.table:=运算符仅就地修改指向列的指针的内部向量。因此,该操作(几乎)是即时的。

关于r - 如何从 data.frame 中删除列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7072159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com