【问题标题】:Replacing vector values替换向量值
【发布时间】:2015-01-28 20:03:42
【问题描述】:

我有一个大数据框 (dataset_n),它由几列组成,每列对应一个不同的变量。 我现在专注于变量:

  1. q32,即净召回工资
  2. pgssyear,即有人被问及工资问题的年份

我想创建一个额外的列来代表给定年份 (pgssyear) 的 CPI,以便稍后计算实际工资(将 q32 除以 CPI 列)。

我尝试了以下方法: - 以不同的名称复制 pgssyear(创建一个名为“year”但内容相同的新向量)并使用“replace”替换第一年:1992 为 1,希望能够将 1993 替换为例如1.35等:

attach(dataset_n)
dataset_n$year <- pgssyear
detach(dataset_n)
dataset_n$year

两个选项都没有: 替换(dataset_n$year, dataset_n$year == 1992, 1) 替换(dataset_n$year, dataset_n$year == "1992", 1) with(data.frame(dataset_n), replace(dataset_n$year, dataset_n$year == 1992, 1)))

为我工作。每次我得到按摩:“'闭包'类型的对象不是子集”

dataset_n$year[dataset_n$year==1992] <- 1

也没有工作,我收到了消息: 警告信息: 在[&lt;-.factor(*tmp*, dataset_n$year == 1992, value = c(NA, NA, : 无效因子水平,NA生成

我怀疑在创建新向量时,数值数据被视为因子。

我也试过: as.numeric(gsub(1992, 1, dataset_n$year)) as.numeric(gsub(1993, 1.35, dataset_n$year))

这一次值被替换了,但我没能“一次性”实现它,而这正是我所需要的。

我也没有更多的想法,因此我们将不胜感激。 我见过的其他可能相关的线程是: Replace given value in vector Error in <my code> : object of type 'closure' is not subsettable

【问题讨论】:

    标签: r vector replace conditional-statements gsub


    【解决方案1】:

    要使这条线工作:

    dataset_n$year[dataset_n$year==1992] <- 1
    

    将您的年份向量从这样的因子转换为数字:

    dataset_n$year <- as.numeric(as.character(dataset_n$year))
    

    【讨论】:

    • 起初我得到了 NAs,但在重新启动 R 后,它工作了!谢谢你。欢迎任何关于其他选项的想法:)
    • @Asiack 您可以在转换为数字后再次尝试它们,它们可能也可以工作。
    猜你喜欢
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 2011-04-23
    相关资源
    最近更新 更多