假設我們有以下的數據幀:獲取列索引在數據幀
> df
A B C
1 1 2 3
2 4 5 6
3 7 8 9
我們可以從它的索引選擇列「B」:
> df[,2]
[1] 2 5 8
有沒有一種辦法從列標籤('B')獲取索引(2)?
假設我們有以下的數據幀:獲取列索引在數據幀
> df
A B C
1 1 2 3
2 4 5 6
3 7 8 9
我們可以從它的索引選擇列「B」:
> df[,2]
[1] 2 5 8
有沒有一種辦法從列標籤('B')獲取索引(2)?
您可以通過grep
和colnames
獲得指數:
grep("B", colnames(df))
[1] 2
或使用
grep("^B$", colnames(df))
[1] 2
只獲取列被稱爲 「B」 沒有那些誰裝上B例如「ABC」。
你原來的例子的優勢,可以在代碼中,如果你表現出其類似DF [使用證明, grep(「^ B」,colnames(df))],即返回以「B」開頭的數據幀列。如果您同意,請隨時使用進一步的編輯。 – 2010-12-13 14:56:45
甚至df [,grep(「^ [BC]」,colnames(df))],即以B或C開頭的列。 – 2010-12-13 15:03:33
@Dwin:@aix已經表示,提問者希望* index *。但我通常也會按照您描述的方式使用'grep'。 – Henrik 2010-12-13 16:05:43
我想看到所有的指數爲colnames,因爲我需要做一個複雜的column rearrangement,所以我打印的colnames的數據幀。 rownames是指數。
as.data.frame(colnames(df))
1 A
2 B
3 C
更簡潔的方法是'cbind(names(df))'。 – lillemets 2018-02-12 11:35:52
見@ matthewdowle的回答這裏最好的解決辦法:http://stackoverflow.com/a/9277935/636656 – 2014-07-14 16:20:39