在R中按名称引用列的范围

tca*_*ter 4 variables r names dataframe

我需要R中可能相当简单的东西的帮助.我想引用数据框中的一系列列(例如,提取一些选择变量).但是,我不知道他们的列号.通常情况下,如果我想提取4-10列,我会说mydata [,4:10].

但是,鉴于我不知道列号,我想通过名称来引用它们.是否有捷径可寻?在sas或spss中,通过名称引用一系列变量相当容易.或者,是否有一种简单的方法可以确定哪个列号对应于R中的变量名?

小智 7

可以根据数据框中的列名称来识别列号,如下所示:

which(colnames(mydf)=="a")
Run Code Online (Sandbox Code Playgroud)

其中 mydf 是数据框,a 是需要列号的列的名称。

来源

这可用于创建列范围:

firstcol = which(colnames(x)=="a")
lastcol = which(colnames(x)=="b")

mydf[c(firstcol:lastcol)]
Run Code Online (Sandbox Code Playgroud)


Mik*_*kko 5

获取一系列列可以通过多种方式完成.subset(data.frame, select = name4:name10),工作但很长.在我为一件简单的事情编写长命令而烦恼之前我曾经使用过它.我创建了一个函数来处理命名列/不记住大数据帧中的列号:

coln <- function(X){
  y <- rbind(seq(1,ncol(X)))
  colnames(y) <- colnames(X)
rownames(y) <- "col.number"
  return(y)} 
Run Code Online (Sandbox Code Playgroud)

下面是它的工作原理:

df <- data.frame(a = 1:10, b =10:1, c = 1:10)
coln(df)
           a b c
col.number 1 2 3
Run Code Online (Sandbox Code Playgroud)

现在你可以用数字打电话给他们,然后看看名字.

  • 我将投票给`subset(df,select = ...)` (2认同)