gpt4 book ai didi

r - 使用 ":"(示例 : subset column B and column D until F))根据列名对数据帧进行子集化

转载 作者:行者123 更新时间:2023-12-01 14:59:29 25 4
gpt4 key购买 nike

我有一个包含许多列(50 多个)的宽 data.table

一个简化的例子(有 5 列):

dt <- data.table(A = 1:10, B = 1, C = 1, D = 1, E = 1, F = 1, G = 1)

现在我想子集列 B 和列 D 直到 F

如果我只想要 D 到 F,我可以这样做:

dt[, D:F]

但是,我想保留 B 列。从长远来看,我可以达到我想要的结果,但这是我要避免的:

dt[, c("B", "D", "E", "F")]

我的问题是是否可以使用如下语法,这显然行不通:

dt[, c("B", D:F)]

请记住,这是一个简化的示例,“不选择 A、C、G”并不能真正解决我的问题。

我一直在想这个问题。我意识到我总是可以长期解决它,但我想知道是否有快速的方法,因为我经常遇到这个问题。

非常感谢任何回复!

最佳答案

base 中,您可以使用 subset 来选择列 B 和 D:F。

subset(x, select = c(B, D:F))
# B D E F
#1 1 1 1 1
#2 1 1 1 1
#3 1 1 1 1
#4 1 1 1 1
#5 1 1 1 1
#6 1 1 1 1
#7 1 1 1 1
#8 1 1 1 1
#9 1 1 1 1
#10 1 1 1 1

这也适用于 data.table,其中 cbind 也可以像这样使用:

cbind(dt[,"B"], dt[, D:F])

或者你可以使用匹配:

i  <- match(c("B", "D", "F"), colnames(x))
x[,c(i[1],i[2]:i[3])]

数据:

x <- data.frame(A = 1:10, B = 1, C = 1, D = 1, E = 1, F = 1, G = 1)

library(data.table)
dt <- data.table(x)

关于r - 使用 ":"(示例 : subset column B and column D until F))根据列名对数据帧进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60174000/

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