Вычислить столбец в R - PullRequest
1 голос
/ 24 июня 2010

В чем разница между двумя утверждениями ниже. Они дают разные результаты, и, поскольку я пытаюсь прийти в R из SPSS, я немного растерялся.

ds$share.all <- ds[132]/ ds[3]
mean(ds$share.all, na.rm=T)

и

ds$share.all2 <- ds$col1/ ds$Ncol2
mean(ds$share.all2, na.rm=T)

они отображают то же самое среднее значение, но на первом вывод выводится как

     col1    
     0.02669424 

, а второй печатает только .02xxxxx.

Любая помощь будет высоко ценится.

1 Ответ

8 голосов
/ 24 июня 2010

Указание столбца фрейма данных в одиночных скобках (ваш первый пример) создает фрейм данных только с этим столбцом, но использование оператора $ (как в вашем втором примере) - просто вектор.Печать чего-либо напечатает имена, связанные с ним, если у него есть имена (col1 в вашем первом примере).Фрейм данных, который вы получаете с помощью ds [132], имеет атрибут name, а вектор, который вы получаете с помощью ds $ col1, - нет.Эквивалентом ds $ col1 будет использование двойных вместо одинарных скобок: ds [[132]].Например:

> x<-data.frame(1:10)
> names(x)<-"var"
> class(x$var)
 [1] "integer"
> class(x[1])
[1] "data.frame"
> identical(x[1],x$var)
[1] FALSE
> identical(x[[1]],x$var)
[1] TRUE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...