Я пытаюсь изменить форму данных, которая содержит коэффициент и числовую переменную с процедурой расплавления и литья. Следующие данные показывают мою проблему:Изменение формы с помощью факторов
library(reshape)
df <- as.data.frame(cbind(c(1,1,2,2,3,3),c(2000,2001,2001,2002,2000,2001),c(2,1,4,3,1,5)))
names(df) <- c("Id","Year","Var")
df$Fac <- interaction(c(1,1,1,0,0,0),c(0,0,0,1,1,1),drop=TRUE)
MData <- melt.data.frame(df,id=c("Year","Id"))
RSData <- cast(MData, Id ~ Year | ...)
операция работает, но недостающие наблюдения в RSData не NAs, как они должны быть, а скорее строки (< NA> и не NA):
$Var
Id 2000 2001 2002
1 1 2 1 <NA>
2 2 <NA> 4 3
3 3 1 5 <NA>
$Fac
Id 2000 2001 2002
1 1 1.0 1.0 <NA>
2 2 <NA> 1.0 0.1
3 3 0.1 0.1 <NA>
Если я, однако, не учитывать фактор САМ нормальный NAs:
df <- as.data.frame(cbind(c(1,1,2,2,3,3),c(2000,2001,2001,2002,2000,2001),c(2,1,4,3,1,5)))
names(df) <- c("Id","Year","Var")
MData <- melt.data.frame(df,id=c("Year","Id"))
RSData <- cast(MData, Id ~ Year | ...)
выходной сигнал становится:
$Var
Id 2000 2001 2002
1 1 1 1 NA
2 2 NA 1 0
3 3 0 0 NA
Строчные НС дают мне проблемы, когда я пытаюсь использовать свои данные перезаписи. Как получить правильные NA, когда у меня есть фактор и числовые переменные в кадре данных, который я хочу расплавить и переделать?
Спасибо,
M
ли dummy1 и Dummy2 должны быть числовыми или факторы? Вы начинаете с переменной 'Fac', которая является фактором, но расплавляется в числовые переменные Dummy1 и Dummy2. – joran
@joran Итак, они две переменные «Dummy1» и «Dummy2» являются числовыми, но принимают только 0 и 1. Я хочу объединить их в фактор «Fac». Я знаю, что в этом маленьком примере создание нового фактора не имеет большого смысла, но в моих реальных данных у меня есть несколько манекенов и, таким образом, получить более двух уровней в результирующем коэффициенте. – Mace
Но большая проблема здесь в том, что когда вы _melt_ df, R пытается складывать Fac поверх всех переменных Dummy. При этом он должен найти один, общий тип данных для использования. Даже если это все факторы, вы столкнетесь с проблемами слияния факторов. Вы действительно хотите включить переменные Dummy при плавлении? – joran