MCA в FactoMineR

Я рисую график MCA с помощью FactoMine R. У меня есть таблицы данных, которые выглядят так:

Met  Aa     Fn      Pg      Pi      Tf      Smut    Ssob    An      Csput
C1  High    N.S.    N.S.    N.S.    High    N.S.    High    High    N.S.
C2  High    N.S.    Low     High    N.S.    N.S.    N.S.    N.S.    N.S.
C4  High    High    N.S.    High    N.S.    N.S.    High    N.S.    High
C6  N.S.    N.S.    High    N.S.    N.S.    N.S.    N.S.    N.S.    High
C9  Low     Low     Low     Low     Low     High    N.S.    Low     Low
C12 N.S.    N.S.    Low     N.S.    N.S.    N.S.    High    N.S.    High

###So I loaded my data
metabolites<-read.csv2('MCA24h_carbon.csv',dec='.')##all metabolites at 24h

###Named the column
metID<-metabolites$met

###Created a new matrix
newmet<-subset(metabolites,select=-c(Met))

### and the number of categories per variable
cats<- apply (newmet, 2, function(x) nlevels(as.factor(x)))


#and this is the output I get from the analysis:
structure(c(85L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 
3L, 3L, 3L, 3L), .Names = c("Var", "Aa", "Fn", "Pg", "Pi", "Tf", 
"Smut", "Ssob", "An", "Csput"))

Это был мой первый красный знак... После этого я выполнил MCA, просто чтобы посмотреть, что я получу, и это был код:

mca1=MCA(metabolites, graph=FALSE)
mca1$eig
mca1$var$coord
mca1$ind$coord
mca1_var_df=data.frame(mca1$var$coord, Variable=rep(names(cats), cats))
mca1_obs_df= data.frame(mca1$ind$coord)

Затем я получаю в консоли следующее:

Error in data.frame(mca1$var$coord, Variable = rep(names(cats), cats)) : 
  arguments imply differing number of rows: 269, 254

Я очень новичок в использовании R (как и 1 неделя), но у меня есть опыт использования SAS... Я понятия не имею, что я делаю неправильно и почему R фиксирует мои данные в приведенной выше структуре (3L, 3L, 3L.. .) Кто-нибудь знает, как действовать дальше?


person Emma Hernandez Sanabria    schedule 10.07.2013    source источник


Ответы (1)


У меня была та же проблема, и я исправил ее, удалив NA, а также проверил, что у вас есть такое же количество уровней фактора, как и метки для этого фактора!

person user2619583    schedule 25.07.2013
comment
Вы можете удалить NA, используя функцию na.omit() - person PAC; 25.07.2013