R: Создание нового столбца с нужными алфавитами - PullRequest
0 голосов
/ 13 марта 2020

Я новичок в R, поэтому прошу прощения, если мой вопрос слишком базовый c, но я очень признателен за помощь в этом.

  mydata <-
structure(list(Col1 = c(17, 28, 80, 63, 20, 
10), Col2 = c(18, 27, 89, 62, 24, 
11), Col3 = c(25, 40, 80, 65, 23, 
11), Col4 = c(27, 29, 100, 72, 34, 
6)), class = "data.frame", 
row.names = c("row1", "row2", "row3", "row4", "row5", 
"row6"))

Я хотел бы добавить новый колонка "Х". Для 'X' я бы хотел назначить A для строки 1-2, B для строки 3-4, C для строки 5 и D для строки 6.

Код, который я пробовал: ..

mydata$X[mydata[c(1:2),]]<-A
mydata$X[mydata[c(3:4),]]<-B
mydata$X[mydata[c(5),]]<-C
mydata$X[mydata[c(6),]]<-D

Я пытался поставить "", например, "А", когда я назначаю буквы, но не смог заставить его работать.

Я получил сообщение об ошибке :

недопустимый тип индекса 'list'

Итак, я попытался распечатать мои данные, но все еще не работал.

Кто-нибудь может помочь, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 13 марта 2020

r2evans полностью ответил на первоначальный вопрос. Это новый и неясный вопрос классификации: «Я хотел классифицировать их по четырем различным группам (A, T, C, G) в соответствии с началом моих последовательностей. Это тоже Похоже, что r2evans отвечает: mydata$X[1:2] <- "A" Расширяем до: mydata$X <- c(rep("A",2), rep("B",2),rep("C",1),rep("D",1)) Последний ответ Ронака, конечно, более красноречив!

2 голосов
/ 13 марта 2020

Вы можете использовать case_when из dplyr. Мы используем grepl, чтобы обнаружить шаблон на основе начала последовательности и назначить значения соответственно.

library(dplyr)

mydata %>%
  #If the value starts with "AAT" assign "A"
  mutate(X = case_when(grepl('^AAT', column) ~ 'A', 
  #If the value starts with "ABC" assign "B"
                       grepl('^ABC', column) ~ 'B', 
                       #More cases
                       #More cases
  #If none of them satisfy assign `NA`
                       TRUE ~NA_character_))

Вместо grepl вы также можете использовать startsWith или str_detect.

...