R Удалить столбцы из data.frame с другим df - PullRequest
0 голосов
/ 17 апреля 2020

Здравствуйте, у меня есть 2 кадра данных:

df1 выглядит так:

enter image description here

, а df2 выглядит так:

enter image description here

Я заметил, что у df1 есть символ точки (.), А у df2 есть "-". Это странно, потому что у них обоих, если я открою текстовый редактор или Excel, у них есть "-".

Мне нужно отбросить все столбцы df1, которые соответствуют значению df2. Я использовал это:

DataGenSample = df1[,!(names(df1) %in% df2)]
#DataGenSample <- df1[ , !(colnames(df1) %in% df2)] 

, но без изменений.

Все Данные могут быть основаны здесь. С кодом, который я использовал.

# Data (df1):
DataGen <- read.table("data_CNA.txt",sep="\t", header=TRUE, check.names = FALSE)

# Samples (df2):
DeleteSample <- read.table("MuestrasEliminar.txt",sep="\t", header=TRUE, check.names = FALSE)

#Delete columns:

#DataGenSample = DataGen[,!(names(DataGen) %in% DeleteSample)]
DataGenSample <- DataGen[ , !(colnames(DataGen) %in% DeleteSample)] 

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Хорошо, я обнаружил, что вам нужно сначала преобразовать ваш df в вектор:

vecDeleteSample <- DeleteSample$SAMPLE_ID 

А затем вы можете отбросить столбцы отображения вашего вектора / списка:

DataGenSample <- DataGen[,!(names(DataGen) %in% vecDeleteSample)]
0 голосов
/ 17 апреля 2020

Проблема - против ..

Когда вы читаете данные, ваша команда чтения, вероятно, имеет аргумент наподобие check.names, который меняет имена, превращая их в "стандартные" имена R - что означает отсутствие знаков препинания, кроме _ и . , Если вы установите check.names = FALSE, исходные имена будут сохранены, и ваш код должен нормально работать.

...