将全名分配给首字母缩略词
Assigning full names to acronyms
目前我有一个数据框,其中包含独特癌症类型的首字母缩写词 (hotspot_mockup),如下所示:
癌症
基因
AASTR
IDH1
ACRM
NRAS
在另一个数据框中,我将这 184 个唯一的首字母缩略词及其对应的全名 (new_hotspot_cancers)。形式为:
首字母缩略词
全名
AASTR
间变性星形细胞瘤
ACRM
肢端黑色素瘤
我想用第二个数据框中相应的全名替换第一个数据框中的首字母缩略词(当然假设首字母缩写词存在于第二个数据框中)。总的来说,我希望结果看起来像:
癌症
基因
间变性星形细胞瘤
IDH1
肢端黑色素瘤
NRAS
我在考虑某种“for”循环,但我知道这在 R 中是不受欢迎的。一如既往,任何指导将不胜感激!
I was thinking of some kind of "for" loop, but I know this is frowned upon in R.
并不是说它不受欢迎,而是那些有其他编程语言经验的人倾向于在不需要时在 R 中使用 for 循环——要么是因为 R 默认向量化,要么是因为有像 [= purrr
包中的 11=] 或 map()
可以更有效地完成 for 循环的工作。
在这种情况下,您可以从 dplyr
包中执行 left_join()
。
df1 <- data.frame(Cancer = c("AASTR", "ACRM"), Gene = c("IDH1", "NRAS"))
df2 <- data.frame(Acronym = c("AASTR", "ACRM"), Full_Name = c("Anaplastic Astrocytoma", "Acral Melanoma"))
dplyr::left_join(df1, df2, by = c("Cancer" = "Acronym"))
Cancer Gene Full_Name
1 AASTR IDH1 Anaplastic Astrocytoma
2 ACRM NRAS Acral Melanoma
您可以使用 merge() 进行右外连接。该函数会自动匹配列名,因此请确保 df1 中的 'Cancer' 和 df2 中的 'Acronym' 具有相同的名称。
colnames(df2)[1] <- 'Cancer'
df.new <- merge(x = df, y = df2, by = "Cancer", all.y = TRUE)
这会为您提供一个新的数据框,其中包含首字母缩略词、全名和您之后可以过滤的基因。
目前我有一个数据框,其中包含独特癌症类型的首字母缩写词 (hotspot_mockup),如下所示:
癌症 | 基因 |
---|---|
AASTR | IDH1 |
ACRM | NRAS |
在另一个数据框中,我将这 184 个唯一的首字母缩略词及其对应的全名 (new_hotspot_cancers)。形式为:
首字母缩略词 | 全名 |
---|---|
AASTR | 间变性星形细胞瘤 |
ACRM | 肢端黑色素瘤 |
我想用第二个数据框中相应的全名替换第一个数据框中的首字母缩略词(当然假设首字母缩写词存在于第二个数据框中)。总的来说,我希望结果看起来像:
癌症 | 基因 |
---|---|
间变性星形细胞瘤 | IDH1 |
肢端黑色素瘤 | NRAS |
我在考虑某种“for”循环,但我知道这在 R 中是不受欢迎的。一如既往,任何指导将不胜感激!
I was thinking of some kind of "for" loop, but I know this is frowned upon in R.
并不是说它不受欢迎,而是那些有其他编程语言经验的人倾向于在不需要时在 R 中使用 for 循环——要么是因为 R 默认向量化,要么是因为有像 [= purrr
包中的 11=] 或 map()
可以更有效地完成 for 循环的工作。
在这种情况下,您可以从 dplyr
包中执行 left_join()
。
df1 <- data.frame(Cancer = c("AASTR", "ACRM"), Gene = c("IDH1", "NRAS"))
df2 <- data.frame(Acronym = c("AASTR", "ACRM"), Full_Name = c("Anaplastic Astrocytoma", "Acral Melanoma"))
dplyr::left_join(df1, df2, by = c("Cancer" = "Acronym"))
Cancer Gene Full_Name
1 AASTR IDH1 Anaplastic Astrocytoma
2 ACRM NRAS Acral Melanoma
您可以使用 merge() 进行右外连接。该函数会自动匹配列名,因此请确保 df1 中的 'Cancer' 和 df2 中的 'Acronym' 具有相同的名称。
colnames(df2)[1] <- 'Cancer'
df.new <- merge(x = df, y = df2, by = "Cancer", all.y = TRUE)
这会为您提供一个新的数据框,其中包含首字母缩略词、全名和您之后可以过滤的基因。