Как использовать apply () для добавления нового столбца на основе условия в другом столбце в R - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь создать новый столбец на основе значений из другого столбца, используя R. Вот пример того, как выглядит data.frame:

df<-data.frame(well=c("A01","A02","A03","B01","B02","B03","C01","C02","C03"))
df 
  well
1  A01
2  A02
3  A03
4  B01
5  B02
6  B03
7  C01
8  C02
9  C03

Я новичок в использовании *Функция 1004 *, поэтому мне интересно, как написать код, который бы создавал новый столбец с именем "row" на основе значений в столбце "well".

То, чего я пытаюсь достичь, выглядело бы так:

df2<-data.frame(well=c("A01","A02","A03","B01","B02","B03","C01","C02","C03"),
row=c("1","1","1","2","2","2","3","3","3")
df2
  well  row
1  A01   1
2  A02   1
3  A03   1
4  B01   2
5  B02   2
6  B03   2
7  C01   3
8  C02   3
9  C03   3

Буква в столбце «хорошо» - это то, от чего зависит значение в столбце «строка», и именно это вызывает у меня проблему. Таким образом, «Axx» выдает «1», «Bxx "даст 2 и т. Д.

1 Ответ

0 голосов
/ 01 февраля 2019

Вот одна идея.Мы можем использовать gsub, чтобы получить букву из столбца well, преобразовать в множитель, а затем преобразовать в числовое значение.

# Create example data frame
df<-data.frame(well=c("A01","A02","A03","B01","B02","B03","C01","C02","C03"),
               stringsAsFactors = FALSE)

df$row <- as.numeric(factor(gsub("[0-9]*", "", df$well)))

df
#   well row
# 1  A01   1
# 2  A02   1
# 3  A03   1
# 4  B01   2
# 5  B02   2
# 6  B03   2
# 7  C01   3
# 8  C02   3
# 9  C03   3
...