[R] Factors and Alternatives

peter dalgaard pdalgd at gmail.com
Wed May 10 00:23:04 CEST 2017


Inline...

> On 9 May 2017, at 12:12 , G.Maubach at weinwolf.de wrote:
> 
> Hi All,
> 
> I am using factors in a study for the social sciences.
> 
> I discovered the following:
> 
> -- cut --
> 
> library(dplyr)
> 
> test1 <- c(rep(1, 4), rep(0, 6))
> d_test1 <- data.frame(test)
> 
> test2 <- factor(test1)
> d_test2 <- data.frame(test2)
> 
> test3 <- factor(test1, 
>                levels = c(0, 1),
>                labels = c("WITHOUT Contact", "WITH Contact"))
> d_test3 <- data.frame(test3)
> 
> d_test1 %>% filter(test1 == 0)  # works OK
> d_test2 %>% filter(test2 == 0)  # works OK
> d_test3 %>% filter(test3 == 0)  # does not work, why?
> 



test3 does not have a level 0. You want

test3 == "WITHOUT Contact"


Notice that once test3 is  created, the input levels are lost, and thus "test3 == 0" becomes meaningless.

-pd


> myf <- function(ds) {
>  print(levels(ds$test3))
>  print(labels(ds$test3))
>  print(as.numeric(ds$test3))
>  print(as.character(ds$test3))
> }
> 
> # This showsthat it is not possible to access the original
> # values which were the basis to build the factor:
> myf(d_test3)
> 
> -- cut --
> 
> Why is it not possible to use a factor with labels for filtering with the 
> original values?
> Is there a data structure that works like a factor but gives also access 
> to the original values?
> 
> Kind regards
> 
> Georg
> 
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-help mailing list