我正在尝试使用列名称的间隔对data.frame
的列进行子集化。
例如,data.frame
A
:
A
ID1 ID2 ID3
1 5 01901
2 5 01902
例如,我想创建带有A:
列的变量bb=A[,"ID2":"ID3"]
“ID1”出错:“ID3”:NA / NaN参数另外:警告信息: 1:在
[.data.frame
(A ,,“ID1”:“ID3”):强制2引入的NA: 在[.data.frame
(A ,,“ID1”:“ID3”):由强制引入的NA
我想要的解决方案:
b
ID2 ID3
5 01901
5 01902
当我放置列的索引时,它可以工作。但是当我使用列名时,如上所述,则不起作用。
答案 0 :(得分:4)
base
R data.frame
中的两种方法:
首先,按已知名称分组:
b = A[, c('ID2', 'ID3')]
其次,在知道列相同的时间间隔内按子集划分:
# Column Variables
colvars = names(A)
# Get the first ID
start_loc = match("ID1",colvars)
# Get the second ID
end_loc = match("ID3",colvars)
# Subset range
b = A[,start_loc:end_loc]
答案 1 :(得分:3)
如果您不限于data.frame,可以将其转换为data.table,然后您的公式将起作用:
data.table::setDT(A)[, ID2:ID3, with=F]
ID2 ID3
1: 5 1901
2: 5 1902
答案 2 :(得分:0)
使用if firstName.length > 0 && lastName.length > 0 { }
函数,然后在使用列名
c()
答案 3 :(得分:0)
您想使用列名而不是数字来选择列间隔,对吗? 为什么不呢?
> b <- A[,c((which(colnames(A)=="ID2")):(which(colnames(A)=="ID3")))]
> b
# ID2 ID3
# 1 5 1901
# 2 5 1902
答案 4 :(得分:0)
如果我们想使用 dplyr
:
# create data frame A
A <- data.frame (ID1 = c("1", "2"),
ID2 = c("5", "5"),
ID3 = c("01901", "01902")
)
# print A
A
# get data frame B
B <- A %>% select(ID2:ID3)
# print B
B