gpt4 book ai didi

R:使用带有数字位置的重复列名对 data.table 进行子集化

转载 作者:行者123 更新时间:2023-12-04 17:35:42 25 4
gpt4 key购买 nike

我有一个看起来像这样的 data.table

> dput(DT)
A B C A B C D
1: 1 2 3 3 5 6 7
2: 2 1 3 2 1 3 4

这是 dput
DT <- structure(list(A = 1:2, B = c(2L, 1L), C = c(3L, 3L), A = c(3L, 
2L), B = c(5L, 1L), C = c(6L, 3L), D = c(7L, 4L)), .Names = c("A",
"B", "C", "A", "B", "C", "D"), row.names = c(NA, -2L), class = c("data.table",
"data.frame"))

基本上,我想根据它们的标题对它们进行子集化。所以对于标题“B”,我会这样做:
subset(DT,,grep(unique(names(DT))[2],names(DT)))
B B
1: 2 2
2: 1 1

如您所见,这些值是错误的,因为第二列只是第一列的重复。我想得到这个:
   B B
1: 2 5
2: 1 1

有人可以帮我吗?

最佳答案

以下替代方案对我有用:

pos <- grep("B", names(DT))
DT[, ..pos]
# B B
# 1: 2 5
# 2: 1 1
DT[, .SD, .SDcols = patterns("B")]
# B B
# 1: 2 5
# 2: 1 1
DT[, names(DT) %in% unique(names(DT))[2], with = FALSE]
# B B
# 1: 2 5
# 2: 1 1

关于R:使用带有数字位置的重复列名对 data.table 进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19829098/

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