2016-08-12 4 views
0

Я только начал изучать программирование R.R-программирование - сопоставление шаблонов (только точное слово)

Pls вы могли бы обеспечить ясность ниже вопроса.

У меня есть файл (XLS), который содержит 1 колонка (with some keywords, i.e. data, data1, test, test1)

У меня есть еще один файл (XLS), который содержит 2 колонки

(Column 1 : ID1, ID2, ID3, ID4 
Column 2 : data, data_analyst, test, test_analyst) 

Теперь, как я использовать шаблон согласования, чтобы получить выход для всех идентификаторов, имеющих соответствующий шаблон и отображающих имя шаблона

например. мой вывод должен быть следующим:

ID1 : pattern matching (data) 
ID2 : pattern not matching 
ID3 : pattern matching (test) 
ID4 : pattern not matching 

Цените ваш ответ, так как я действительно путают

+2

Вы дошли до того, что прочитали две таблицы Speadsheets в кадрах данных? –

+1

Добро пожаловать в SO. Чтобы получить наилучшие ответы, предоставьте пример [Минимальный, полный и проверенный] (http://stackoverflow.com/help/mcve) вместе с кодом, который вы уже пробовали. – nya

+0

Я попробовал sapply (XLS $ column1, grepl, XLS $ column2), но не дал точное совпадение слов. он пытается включить data_analyst и test_analyst, когда я ищу только данные и тест –

ответ

0

Первый шаг для импорта файлов XLS в R. Это будет импортировать их в виде кадров данных, но может не иметь имена столбцов, которые вы ожидаете. Поэтому вы также должны указывать имена на то, что вы признаете.

file1 = read.xls("file1", header=TRUE) 
file2 = read.xls("file2", header=TRUE) 
names(file1) = c("DATA") 
names(file2) = c("ID","DATA") 

После этого вы выполните слияние на основе DATA.

matched = merge(file1, file2, by="DATA") 

В этот момент «соответствие» включает в себя все строки, которые соответствуют. Поэтому вам нужно использовать функцию соответствия, чтобы найти, какие из них соответствуют «совпадают» с параметрами в файле «file1».

a = match(file2$ID,matched$ID) 
final = file2 
names(final) = c("ID","MATCH") 
final[which(is.na(a))],"DATA"] = "pattern does not match" 
final[-which(is.na(a))],"DATA"] = "pattern matches" 
+0

> file1 = read.csv ("1_Data analysis_SITcases.csv", header = TRUE) > file2 = read.csv ("Business_Elements.csv", header = TRUE) > names (file1) = c ("ElementName") > names (file2) = c ("TS_TEST_ID", "TS_USER_01") Ошибка в именах (file2) = c ("TS_TEST_ID", "TS_USER_01"): Атрибут 'names' [2] должен быть такой же длины, как вектор [1] > –

+0

привет, вы можете посоветовать об ошибке pls –

+0

Это CSV-файл, а не файл XLS или XLSX. Сохраните файл Excel как один из этих форматов, а затем попробуйте его. –