首页 > 解决方案 > 替换有45781858行,数据有1752611

问题描述

我认为之前已经有人问过这个问题,但我找不到解决我的问题的方法。我有以下数据框

 (obj_1 <- data.frame (
      yr = c(1990, 1990, 1990, 1992, 1992, 1992),
      EARNWEEK= c(223, 200, 234, 500, 700, 800),
      AHRSWORKT= c(50, 40, 35, 35, 35, 40),
      WAGE = c(10, 8, 8, 9, 10, 9)
   ))

我想创建一个名为 REALWAGE 的列,其中我在每一行中插入变量 WAGE 的值乘以一个值,该值在不同年份是不同的。当我尝试运行以下代码时...

obj1[obj1$yr %in% 1992,"REALWAGE"] <- cps_data$WAGE*1.223

等下一年

obj1[obj1$yr %in% 1993,"REALWAGE"] <- cps_data$WAGE*1.153

...错误 replacement has 45781858 rows, data has 1752611正在显示。怎么可能解决这个问题?

提前谢谢了!!

标签: r

解决方案


您必须在两侧进行子集化:

i <- obj_1$yr == 1992
obj_1[i,"REALWAGE"] <- obj_1$WAGE[i]*1.223

或者您使用查找表match

LU <- read.table(text="
1992 1.223
1993 1.153")

obj_1$REALWAGE <- obj_1$WAGE * LU[match(obj_1$yr, LU[,1]), 2]

或者

LU <- c('1992' = 1.223, '1993' = 1.153)
obj_1$REALWAGE <- obj_1$WAGE * LU[as.character(obj_1$yr)]

推荐阅读