【问题标题】:Replace values in data frame with other values according to a rule根据规则将数据框中的值替换为其他值
【发布时间】:2014-01-01 04:32:28
【问题描述】:

我是 R 的初学者,找不到以下问题的解决方案。任何帮助将不胜感激!

我有一个 data.frame,想用定义的其他值替换列的某些值。

data.frame

date<-c("19921231","19931231","19941231","19941231","19931231","19941231")
variable<-c("a","a","a","b","b","b")
value<-c(1:6)
dataframe <- data.frame(date,variable,value)

尝试解决问题

yearend<-c("19921231","19931231","19941231")
year<-c("1992","1993","1994")
map = setNames(yearend,year)
dataframe[] = map[dataframe]

错误信息

Error in map[dataframe] : invalid subscript type 'list'

问题很明显,它不是矩阵。解决这个问题最有效的方法是什么?如果我想替换“真实”字符,它也应该工作,例如“BGSFDS”与“巴斯夫股票”。

【问题讨论】:

    标签: r map dataframe


    【解决方案1】:

    一个不错的函数是来自 plyr 包的 mapvalues()

    require(plyr)
    dataframe$newdate <- mapvalues(dataframe$date, 
              from=c("19921231","19931231","19941231"), 
              to=c("1992","1993","1994"))
    

    【讨论】:

    • 这就是我一直在寻找的答案!
    • 为什么这个答案不在顶部
    【解决方案2】:

    merge() 也可能有帮助。

    yearend<-c("19921231","19931231","19941231")
    year<-c("1992","1993","1994")
    map = data.frame(yearend,year)
    
    merge(dataframe,map,by.x='date',by.y='yearend')
    

    【讨论】:

      【解决方案3】:

      你可以使用match:

      dataframe <- transform(dataframe, Year = year[match(date, yearend)])
      
            date variable value Year
      1 19921231        a     1 1992
      2 19931231        a     2 1993
      3 19941231        a     3 1994
      4 19941231        b     4 1994
      5 19931231        b     5 1993
      6 19941231        b     6 1994
      

      【讨论】:

        【解决方案4】:

        当您想从日期中提取年份时,您可以使用以下代码行:

        dataframe$year <- substr(dataframe$date,1,4)
        

        当您想同时为新变量分配一个类时:

        dataframe$year <- as.integer(substr(dataframe$date,1,4))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-18
          • 1970-01-01
          • 2021-02-20
          • 1970-01-01
          • 2021-07-24
          相关资源
          最近更新 更多