R 如何筛选具有相同列名的数据帧?
我正在读一个有多余列名的文本文件 file.txtR 如何筛选具有相同列名的数据帧?,r,filter,R,Filter,我正在读一个有多余列名的文本文件 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 rt我们可以使用grep选择名称以B或E开头的列。默认情况下,data.frame不允许重复列名,实际上它在许多方面都非常有用 df1[
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
rt我们可以使用grep
选择名称
以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
但是,如果需要保留重复的列名,我们可以在read.table/read.csv
中使用check.names=FALSE
读取数据集,但我不建议这样做,因为这样会在子集设置时造成很多混乱。不使用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