R преобразовать имена в числа - PullRequest
3 голосов
/ 18 ноября 2011

У меня есть фрейм данных с пожертвованиями и именами доноров.

**donation**              **Donor**
 25.00               Steve Smith
 20.00               Jack Johnson
 50.00               Mary Jackson
  ...                   ...

Я пытаюсь выполнить кластеризацию с помощью пакета pvclust.К сожалению, пакет не принимает нечисловые данные.

> rs1.pv1 <- parPvclust(cl, rs1, nboot=10)
Error in cor(x, method = "pearson", use = use.cor) : 'x' must be numeric

У меня два вопроса.

1) Есть ли другой пакет или метод, который сделал бы это лучше?

2) Есть ли способ «нормализовать» список имен доноров?Т.е. получить список уникальных имен доноров, назначить каждому номер идентификатора и затем вставить номер идентификатора во фрейм данных вместо имени персонажа.

Ответы [ 2 ]

5 голосов
/ 18 ноября 2011

Для номера 2:

#If donor is a factor then

as.numeric(donor)

#will transform your factor to numeric.
#If it isn't, tranform it to a factor and the to numeric
as.numeric(as.factor(donor))

Однако я не уверен, что преобразование списка доноров в числовое значение с последующим использованием cor имеет смысл.

НТН

2 голосов
/ 18 ноября 2011

Как насчет rs1 <- transform(rs1, Donor=as.numeric(factor(Donor)))?( Предупреждение : я не задумывался о том, что вы делаете, чтобы понять, имеет ли это смысл - поэтому я отвечаю только на вопрос № 2, а не на вопрос № 1).Обычно Donor уже будет фактором (это то, что, например, read.table или read.csv будет делать по умолчанию), поэтому часть factor() будет избыточной.

...