我正在读取一个具有多余列名称的文本文件。如何过滤具有相同列名称的数据框?
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