【问题标题】:Find and replace many factors in one column in R在 R 的一列中查找并替换许多因子
【发布时间】:2015-03-24 02:58:26
【问题描述】:

我有 32 个不同级别的列。我需要更换这些关卡

 ?
 diet
 diet contr
 IDDM
 Note
 Other
 denial
 Resolved
 Unsure

在该列中

我知道我可以使用大量 ifelse((column = "?" | column = "diet" |.....) 语句来做到这一点,我想知道是否有一种有效的方法来替换这些因素?

【问题讨论】:

    标签: r if-statement grepl


    【解决方案1】:

    您可以使用%in%,以及levels()levels<- 替换功能。比如用样本向量x

    ( x <- factor(c("diet", "diet contr", "IDDM", "Note", "Other", 
          "denial", "Resolved", "Unsure")) )
    # [1] diet       diet contr IDDM       Note       Other     
    # [6] denial     Resolved   Unsure    
    # 8 Levels: denial diet diet contr IDDM Note ... Unsure
    

    要将“饮食”、“注意”和“其他”全部更改为“否”,您可以更改它们各自的级别

    levels(x)[levels(x) %in% c("diet", "Note", "Other")] <- "No"
    x
    # [1] No         diet contr IDDM       No         No        
    # [6] denial     Resolved   Unsure    
    # Levels: denial No diet contr IDDM Resolved Unsure
    

    【讨论】:

      【解决方案2】:

      您可以使用plyr 包中的mapvalues 函数。试试这段代码 sn-p,它假定您在名为 df$column 的数据框中有一个因子列:

      library(plyr)
      vals_to_replace <- c("diet", "diet contr", "IDDM")
      mapvalues(df$column,
                from = vals_to_replace,
                to = rep("No", length(vals_to_replace)))
      

      您可以向vals_to_replace 添加任意数量的因子名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-03
        • 1970-01-01
        • 2016-03-11
        • 2012-01-04
        • 2014-05-14
        • 2019-09-19
        • 2021-08-07
        • 2016-12-31
        相关资源
        最近更新 更多