r - 替换有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
正在显示。怎么可能解决这个问题?
提前谢谢了!!
解决方案
您必须在两侧进行子集化:
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)]
推荐阅读
- ssl-certificate - java api从同一个pem文件中读取证书和CRL
- maven - 为什么即使我已经在 pom.xml 中包含了依赖项,我也会收到 NoClassDefFoundError?
- angular - AWS Cognito - 直接联合身份提供商登录页面(没有 cognito 登录页面)
- c# - 在图表中绘制多个线系列的按钮
- php - 法语字符串未正确存储在 mysql 数据库中
- java - 分析什么堆消耗了 JUnit JavaFx
- android - 如何在 Android Studio 中创建带有句柄的隐藏可拖动窗格
- python - 在python中将文本文件转换为字典
- python-3.x - 将多个输出放入一个列表
- angular - 如何检测离子5中不同页面上的离子菜单关闭事件