【问题标题】:How to combine four factors into two in the same column in R?如何在 R 的同一列中将四个因子合并为两个?
【发布时间】:2014-02-04 18:04:14
【问题描述】:

我有一组数据,其中包括性别。但不是“女性”和“男性”,而是“女性”、“f”、“男性”和“m”4个类别。我正在尝试将所有“f”和“m”分别替换为“female”和“male”。

我在这里使用什么命令?

数据如下:

dt <- data.frame(...)

     Gender     Age    
1    female     24          
2         m     38      
3    female     29      
4         m     33      
5         m     49      
6         f     29      
7         f     26      
8         f     36      
9    female     58      
10        f     31      
11   female     31      
12        f     29      
13   female     19      
14     male     38      
15   female     63      

我试过这段代码:

dt$Gender <- dt$Gender(c("female","female","male","male"))  

但它说错误。

【问题讨论】:

标签: r command statistics


【解决方案1】:

既然您在标题中提到了factor,那么您是否看过factor 函数?

x <- c("female", "f", "male", "m", "f", "undeclared")
y <- factor(x)
y
# [1] female     f          male       m          f          undeclared
# Levels: f female m male undeclared
levels(y) <- list("female" = c("female", "f"),
                  "male" = c("male", "m"),
                  "undeclared" = "undeclared")
y
# [1] female     female     male       male       female     undeclared
# Levels: female male undeclared

【讨论】:

    【解决方案2】:
    > #Use first 2 and last 4 cases in your data to demonstrate
    > tt <- data.frame(Gender = as.factor(c("female", "m", "f", "female", "male", "female")), Age = as.numeric(c(24,38,29,19,38,63)))
    > tt
      Gender Age
    1 female  24
    2      m  38
    3      f  29
    4 female  19
    5   male  38
    6 female  63
    
    > str(tt)   # Check the structure of the data, make sure Gender is a factor
    'data.frame':   6 obs. of  2 variables:
     $ Gender: Factor w/ 4 levels "f","female","m",..: 2 3 1 2 4 2
     $ Age   : num  24 38 29 19 38 63
    
    > levels(tt$Gender)   # Show the levels of factor "Gender"
    [1] "f"      "female" "m"      "male"  
    
    > levels(tt$Gender) <- c("female","female","male","male")  
      # Assign new levels you want -- make sure they are in the same order as the old ones
    
    > levels(tt$Gender)   # Now the identical levels are combined 
    [1] "female" "male" 
    

    ** 如果 Gender 不是一个因素,您可以使用as.factor() 更改变量类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-08
      • 2019-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多