【发布时间】:2020-03-21 21:02:41
【问题描述】:
所以我有一个非常严格的系统,允许添加 R 脚本来处理一些数据。这是一个前端系统,我可以输入大约 1000 个字符。我正在做的是将 data.frame (filedata_model) 上的值替换为翻译列表中的值。
这是我目前所拥有的:
vGrades <- c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 4, 4, 3.7, 3.3, 3, 2.7, 2.3, 2, 1.7, 1.3, 1, 0, 0);
vGradeMx <- matrix(vGrades, nrow = 14, ncol = 2);
colnames(vGradeMx) <- c("CB_GRADE", "RNL_GPA");
vGradeTb <- as.data.frame(vGradeMx);
我知道这可能非常低效。我习惯于使用基于 VBA 和 C 的编程语言以及大量 SQL。如果我可以写一个更新语句,这将花费我 2 秒。但是我没有任何类型的后端访问权限,也没有在我可以将 R 脚本放入这个小盒子之外的实际数据本身上编写功能。
所以这就是我写下我所拥有的内容的原因: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 - 这些是我们从文件中的研究供应商那里得到的值 0, 4, 4, 3.7, 3.3, 3, 2.7, 2.3, 2, 1.7, 1.3, 1, 0, 0 - 这些是我们想要更改的值。
我设置了一个额外的数据框来保存原始值和翻译值,但是现在呢?我尝试过的一切通常都失败了。我学到的所有 R 都来自一个周末试图在我的大脑中塞满尽可能多的书。
感谢您的帮助!
【问题讨论】:
-
试试看
merge函数 -
@BrunoZamengo - 这是用翻译后的值替换原始值,还是会在数据集中添加一个额外的列?我正在阅读的合并是它只是将表连接在一起。我需要它来替换原始数据框中的原始值。
-
merge,添加列,然后删除原始列。它类似于 SQL 的“连接”运算符,并且可以以类似的方式使用。 -
@r2evans 这看起来对我不起作用:
merge(vGradeTb, filedata_model, by.x="CB_GRADE", by.y = "HS_GPA")这从查找表中添加了 CB_GRADE 和 RNL_GPA 列,但没有特别的顺序。如果我比较 HS_GPA 的原始值,我在 RNL_GPA 中看不到我想看到的正确值。看起来它只是直接从列表中删除并将所有内容隔开。
标签: r