当数据框中的名称包含在向量中时,请选择数据框列,但保持相同的原始顺序

时间:2018-05-25 09:51:41

标签: r subset

我有一个带有列标题的数据框和一个字符串字符向量。

到目前为止,在数据框中,我可以保留与向量中的字符串匹配的列名。但是,生成的截断数据框按字母顺序显示列,而不是按原始矢量中的顺序显示。

# the data frame
df <- head(t(USArrests))

# the vector of string character
v <- c("Wyoming", "Alabama", "California", "Arizona")

# subsetting the data frame by column names contained in the vector
df[,which(colnames(df) %in% v)]
         Alabama Arizona California Wyoming
Murder      13.2     8.1        9.0     6.8
Assault    236.0   294.0      276.0   161.0
UrbanPop    58.0    80.0       91.0    60.0
Rape        21.2    31.0       40.6    15.6

但我试图将原始顺序保留在向量中,如下所示:

         Wyoming    Alabama California  Arizona
Murder       6.8       13.2        9.0      8.1
Assault    161.0      236.0      276.0    294.0
UrbanPop    60.0       58.0       91.0     80.0
Rape        15.6       21.2       40.6     31.0

2 个答案:

答案 0 :(得分:4)

而不是使用:

ifelse

只需使用:

df[,which(colnames(df) %in% v)]

答案 1 :(得分:0)

您还可以使用subset()功能:

subset(df,select=c(v))