我正在讀取一個具有多餘列名稱的文本文件。如何過濾具有相同列名稱的數據框?
file.txt的
A B B E E
2 2 4 4 5
3 4 5 6 8
我想保持它有B和E作爲列名的列。但當我讀取文件
rt<-read.table("file.txt",header=TRUE)
A B B.1 E E.1
1 2 4 4 5
2 4 5 6 8
我可以使用正則表達式,而篩選數據框?
我正在讀取一個具有多餘列名稱的文本文件。如何過濾具有相同列名稱的數據框?
file.txt的
A B B E E
2 2 4 4 5
3 4 5 6 8
我想保持它有B和E作爲列名的列。但當我讀取文件
rt<-read.table("file.txt",header=TRUE)
A B B.1 E E.1
1 2 4 4 5
2 4 5 6 8
我可以使用正則表達式,而篩選數據框?
我們可以使用grep
來選擇names
的列,以B
或E
開頭。默認情況下,data.frame
不允許重複列名,並且在許多方面它實際上非常有用。
df1[grep("^(B|E)", names(df1))]
# B B.1 E E.1
#1 2 4 4 5
#2 4 5 6 8
然而,我們可以閱讀check.names=FALSE
數據集在read.table/read.csv
,如果我們需要不斷重複的列名,但我不建議這樣做,因爲這會造成很多混亂,而子集。在不使用check.names
的情況下,即使存在重複的列名,read.table
也會調用make.unique
以獲取unique
列名稱。
Another way of coding for the same
rt[!grepl("^A",colnames(rt))]
B B.1 E E.1
2 4 4 5
4 5 6 8