2016-01-19 2 views
-3

Первый запрос:расщепления строка и извлечения отдельных элементов

Имя файла является тест, который представляет собой кадр данных и вектор является только один, содержащие имена, как Стейси-A, B-Марк, Жизель-C. Я хочу разбить имя, скажем, Stacy-A, и у меня больше 50000+ строк. Итак, я хочу, чтобы один вектор содержал Stacy и один вектор, содержащий A i.e. символы после split. Я запустил цикл для этого. Поскольку цикл возвращает списки, и я использовал это.

for(i in 1:nrow(TEST)){TEST[i,"Name"]<-strsplit(TEST[i,"Name"],"-")[[1]][1] 
    TEST[i,"Character"]<-strsplit(TEST[i,"Name"],"-")[[1]][2]} 

Это займет много времени. Может кто-нибудь дать мне знать, как использовать sapply или любую функцию приложения, но я хочу в кадре данных, а не в списках или матрицах.

Второй запрос:

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

Я хочу поместить поиск как excel, чтобы выбрать значения из другого файла. У меня два условия в моей петле. Я нахожу совпадающие значения, тогда только я выбираю его, и если есть дубликаты, я выбираю только один. Я использовал этот цикл. Это занимает 3 часа. У меня есть dataframe и для 300000+ строк в моем файле пользователя, откуда мне нужны значения.

for (i in 1:nrow(Test)){if(Test[i,"Item_Cd"] %in% User_item_no) 
{item_cd_found<-Test[i,"Item_Cd"]Test[i,"Order.Status"]<-as.character(User[which(User$Item.No.==item_cd_found),"Name"])[1]} 
+2

голосования, чтобы закрыть, ему не хватает [mcve], см [эту тему] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example), чтобы улучшить ваш вопрос. – Tensibai

ответ

1

Это может быть выстрел в темноту без воспроизводимого примера, но вы можете быть чем-то вроде этого. Сначала я разбиваю каждый элемент на - и вынимаю первый и второй элементы и присваиваю их соответствующей переменной.

xy <- c("Svarog-A", "Knez-B", "Petovia-C", "Svarun-D", "Hotimir-D") 

splitxy <- strsplit(xy, "-") 

xy.names <- sapply(splitxy, "[", 1) 
xy.letters <- sapply(splitxy, "[", 2) 

> xy.names 
[1] "Svarog" "Knez" "Petovia" "Svarun" "Hotimir" 
> xy.letters 
[1] "A" "B" "C" "D" "D" 
+0

И для создания data.frame: 'data.frame (Name = xy.names, Letter = xy.letters)' – sdgfsdh

+0

Спасибо, Роман это сработало. Я получил свой ответ для первого запроса – iamashish

+0

@AshishPatodia Предлагаю вам открыть второй вопрос для второго запроса. Не забудьте предоставить [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) и желаемый результат, если это возможно. –

Смежные вопросы