【发布时间】:2015-01-28 20:03:42
【问题描述】:
我有一个大数据框 (dataset_n),它由几列组成,每列对应一个不同的变量。 我现在专注于变量:
- q32,即净召回工资
- 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
也没有工作,我收到了消息:
警告信息:
在[<-.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