首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的数据字典链接

R中的数据字典链接
EN

Stack Overflow用户
提问于 2020-08-03 11:29:32
回答 2查看 121关注 0票数 0

我有两份数据如下。

  • I想要更新patients dataframe
  • ,并将Option_nameOption_num交换为all.

代码语言:javascript
复制
## dataframe
patid = c(1, 2, 3, 4, 5, 6, 7, 8, 9) 
technique = c("VMAT", "IMRT", "ELEC", "VMAT", "VMAT", "VMAT", "ELEC", "VMAT", "IMRT")
intent = c("Radical", "Curative", "Adjuvant", "Curative", "Curative", "Curative", "Curative", "Curative", "Adjuvant")
patients = data.frame(patid, technique, intent)
代码语言:javascript
复制
## data dictionary
variable = c("technique", "technique", "technique", "intent", "intent", "intent")
Option_name = c("VMAT", "IMRT", "ELEC", "Radical", "Curative", "Adjuvant")
Option_num = c(1, 2, 3, 1, 2, 3)
dict = data.frame(variable, Option_name, Option_num)

因此,patients数据将更改。

从…

我知道如何通过一个非常手动的过程来做到这一点:

代码语言:javascript
复制
patients$technique <- replace(as.character(patients$technique), patients$technique == "VMAT",1)

但我相信会有一个更有效的方法。

任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2020-08-03 13:00:32

你可以试试这个:

代码语言:javascript
复制
library(dplyr)
library(purrr)
patients %>%
    mutate(across(c(technique, intent), 
                  ~map(as.character(.), 
                       ~dict$Option_num[which(dict$variable == cur_column() & dict$Option_name == .)])))

或完全tidyverse选项:

代码语言:javascript
复制
library(dplyr)
library(purrr)
patients %>%
    mutate(across(c(technique, intent), 
                  ~map(as.character(.), 
                       ~pull(filter(dict, 
                                    variable == cur_column(), 
                                    Option_name == .x), 
                             Option_num))))
票数 1
EN

Stack Overflow用户

发布于 2020-08-03 12:27:24

这肯定不是最优雅的解决方案,但我想不出其他的解决方案。

代码语言:javascript
复制
for (a in c("technique", "intent")) {
  # go through the columns
  for (b in unique(patients[, a])) {
    # go through the Option_name
    patients[patients[, a] == b, a] <- dict[dict[, "variable"] == a & dict[, "Option_name"] == b, "Option_num"]
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63228615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档