У меня есть кадр данных с столбцом, заполненным данными, подобными этому, на хромосоме, а затем в базовом положении, все в одном столбце. Я заполнил оставшиеся столбцы от V2 до V5 целыми числами, чтобы имитировать аналогичный файл данных.Как создать новые столбцы в data.frame на основе символов буквы и номера символов в столбце в R
> test
V1 V2 V3 V4 V5
1 I.1286480 9 17 25 33
2 I.1898932 10 18 26 34
3 I.11871397 11 19 27 35
4 II.1252994 12 20 28 36
5 II.18175911 13 21 29 37
6 III.10298347 14 22 30 38
7 IV.123478912 15 23 31 39
8 V.12837471234 16 24 32 40
с другими данными в следующих колонках. Это огромный набор данных с 115 000 строк. Я хочу создать два новых столбца, один из которых содержит римские цифры (I, II, III, IV, V) и другой столбец, содержащий число, следующее за римскими цифрами. Проблемы, с которыми у меня возникают проблемы, это то, что это вектор объектов символов, поэтому я не уверен, как разбирать буквы из чисел. Я попытался с помощью StrPos из пакета DescTools, но
> StrPos(test$V1, "I")
[1] 1 1 1 1 1 1 1 NA
> StrPos(test$V1, "I.")
[1] 1 1 1 1 1 1 1 NA
возвращает позиции всех «I» с, а не только объекты с одним экземпляром «I». Мне интересно, будет ли работать substring
? Но тогда у меня есть проблема, когда все римские цифры имеют разную длину, а также числа, следующие за римскими цифрами разной длины. Я знаю, что должно быть простое решение этой проблемы, но единственное, что я могу придумать, очень длинное: for
и if
. Помоги мне, stackoverflow, ты моя единственная надежда!
Вы можете сделать 'cbind 'Или с data.table' setDT (test) [, c ("chr", "pos"): = tstrsplit (V1, ".", Fixed = TRUE)] ' –