提问人:Gabriella Schulz 提问时间:11/18/2023 最后编辑:M--Gabriella Schulz 更新时间:11/18/2023 访问量:66
R [duplicate] 中的函数和 for 循环问题
Function and for loop issue in R [duplicate]
问:
我正在使用的功能无法正常工作。该函数是通过使用代码将数据集与另一个数据集中的多个列进行匹配。匹配后,它会将多列替换为代码含义的描述。
代码条件预料:
法典 | 标签 |
---|---|
04 | 肾病 |
06 | 贫血 |
00 | 没有 |
18 | 乙型肝炎 |
Birth_IndicatorsConditions:
并发症1 | 并发症2 | 并发症3 |
---|---|---|
06 | 04 | 那 |
00 | 那 | 那 |
04 | 06 | 18 |
CleanConditionPreg <- function(Condition){
codes <- Condition %>% select(starts_with(c("Complications")))
labels <- data.frame(matrix(NA, nrow(Condition), 0))
names <- rep(NA, ncol(codes))
# For each column of codes, match corresponding labels and assign new variable names
for (i in seq(1, ncol(codes))) {
labels[,i] <- CodeConditionPreg[match(codes[,i], CodeConditionPreg$code),2]
names[i] <- paste0("Other_Complications", i-1)
}
# Rename first diagnosis as principal, then append new named columns to data frame
names[1] <- "Complications"
colnames(labels) <- names
Condition <- cbind(Condition, labels)
}
Birth_IndicatorsWithConditions <- CleanConditionPreg(Birth_IndicatorsConditions)
这给了我这个空白值的打印输出,但正在生成新列: 输出 该函数似乎正在工作,但我不知道我缺少什么将标签放入更大的数据集中。
我试图让它看起来像:
并发症 | Other_Complications1 | Other_Complications2 |
---|---|---|
贫血 | 肾病 | 那 |
没有 | 那 | 那 |
肾病 | 贫血 | 乙型肝炎 |
答: 暂无答案
评论
library(tidyverse); Birth_IndicatorsConditions %>% rowid_to_column() %>% pivot_longer(-c(rowid, date_of_birth, first, last, etc)) %>% left_join(CodeConditionPreg, by = c("value"= "Code")) %>% select(-value) %>% pivot_wider(names_from = "name", values_from = "label") %>% select(-rowid)